1.Yaf的library和model的文件命名规则和调用

  1.1在项目中,往往需要封装一些,如redis,不同的产品需要用不同的库等等等,这就涉及到封装

    1.在 Yaf 中,我们可以写一个单例模式的 redis 来提供一个入口,进行各个库(0-15)之间的实例的创建,然后在 Model 下面建立一个 BaseModel 来对接单例 Redis  的实例接口,然后各个模块的 Model 类在继承这个 BaseModel 即可实现.

    2.那么,我们一般的习惯是根据 命名空间\文件路径 来实例化类或者引入,比如:

    

 $object = new Path\showPath();

    这就代表着实例化了 Path 下的 showPath 类文件,但是在 Yaf 中并不是这样,如果这样书写,Yaf 报错,提示文件在XXX路径下找不到

    3.这是因为 Yaf 的ap.library的设置路径(默认就是在application/library目录),如果没有设置(具体设置看手册),比如 我们想写一个 Db 下面的 Redis类文件, 需要这么做

      3.1 首先,我们在 library 下面新建文件夹 Db 然后 创建 Redis.php 文件,

      3.2 重点来了 Redis.php 文件中的类名称 必须是 Db_Redis 也就是说 必须是 路径_文件名 的格式,

<?php
class Db_Redis {
private static $_instance = [];
private $redis;
private $host;
private $port;
private $auth; public function index(){
//TODO : do something
} }

      然后 实例化的时候直接

 $object = new Db_Redis();

      如果是静态

 $object = Db_Redis::getInstance();

      3.3 这样 Yaf 会自动在library(如果配置了ap.library会在配置的目录下)寻找这个类文件!

  2.1 Model下的类文件的调用方法

    1.如 想在 Model 下面建立 Chat.php ,文件中类名必须是 ChatModel ,

 class ChatModel extends BaseModel
{
public function __construct(){
//TODO : something
} }

    2.要是想建立实例化 需要直接使用该文件的 类名称 如:ChatModel 即可

 $object = new ChatModel();

    3.静态同Library一致

总结:Yaf在追求极致效率,架构极简的同时,需要我们一点一点针对项目去完善,极简的设计带来明朗清晰的开发思路

Yaf学习(三)----Yaf类库Library和Model的命名规则的更多相关文章

  1. yaf学习之——yaf安装

    yaf的github源码地址 https://github.com/laruence/yaf 第一步: 下载dll扩展: http://pecl.php.net/package/yaf/2.3.5/w ...

  2. Yaf学习(二)----Yaf初体验

    1.hello world 1.1 用yaf输出hello world 1.首先配置host,nginx 2.host不用多说,指向虚拟机IP即可 1.2 重点说一下nginx (只说server块) ...

  3. yaf学习资料

    yaf学习资料 文档 鸟哥的官方文档 Yaf框架结合PHPUnit的集成测试 php yaf框架扩展实践六--单元测试.计划任务.第三方库等 php yaf框架扩展实践一--配置篇 yaf实战例子 y ...

  4. Lnmp上安装Yaf学习(一)

    今天学习Lnmp上面如何安装Yaf流程 一.安装Lnmp 集成环境 访问路径:https://lnmp.org/install.html 这里我安装稳定版lnmp 1)   wget -c http: ...

  5. php 安装yaf扩展和yaf框架

    一.安装yaf扩展(windows安装) 1.查看你电脑安装的开发环境(phpinfo()的信息),查找 "Zend Extension Build"和"PHP Exte ...

  6. Protocol Buffer学习教程之类库应用(四)

    Protocol Buffer学习教程之类库应用(四) 此教程是通过一个简单的示例,给C++开发者介绍一下如何使用protocol buffers编程,主要包括以下几部分: 定义一个.proto文件 ...

  7. EntityFramework Core 学习系列(一)Creating Model

    EntityFramework Core 学习系列(一)Creating Model Getting Started 使用Command Line 来添加 Package  dotnet add pa ...

  8. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  9. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

随机推荐

  1. 新发布 | 微软开源之路最新进展:FreeBSD落地由世纪互联营运的Microsoft Azure

    微软和开源,是近几年业界孜孜不倦的讨论话题,微软也在开源之路越走越宽.最近与 FreeBSD 基金更紧密的合作踏出了微软在开源之路上的又一大步. 自2012年开始,微软在 FreeBSD 与其虚拟化平 ...

  2. collectd配置

    udp proxy - 192.168.48.112 cat > /etc/collectd_25801.conf << EOF Hostname "kvm-48-112& ...

  3. xshell里的一些配色方案

    只需要把下面的代码复制到记事本中,保存为xcs文件格式,然后在xshell中导入选中就可以换配色方案了,可以自己修改下面的代码 [ubuntu]text(bold)=ffffffmagenta(bol ...

  4. 手写vector

    看过JDK源码,现在自己想实现一个vector. 最开始的时候,我大概构想了一下怎么设计,一种是设置一个指针数组来存放对象,这样修改的时候可以不用大量的元素复制,但后来仔细想了想,它需要设置一个额外的 ...

  5. 【Mysql】—— 报错:Can't call commit when autocommit=true

    java.sql.SQLException: Can't call commit when autocommit=true at com.mysql.jdbc.SQLError.createSQLEx ...

  6. May 09th 2017 Week 19th Tuesday

    Everything you see exists together in a delicate balance. 世上所有的生命都在微妙的平衡中生存. A delicate balance? Can ...

  7. arcgis for javascript ArcGISDynamicMapServiceLayer 过滤图层点

    记录下过滤 ArcGISDynamicMapServiceLayer 图层服务的方法 function filterArcGISDynamicMapServiceLayer(){ map.graphi ...

  8. Android(java)学习笔记30:泛型接口的概述和使用

    1. 泛型接口的概述和使用: package cn.itcast_06; /* * 泛型接口:把泛型定义在接口上 */ public interface Inter<T> { public ...

  9. Android UI开发专题(转)

    http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=18736&page=1#pid89255 Android UI开发专题(一) 之界面设计 近期 ...

  10. Trident中 FixedBatchSpout分析

    FixedBatchSpout 继承自 IBatchSpout IBatchSpout 方法 public interface IBatchSpout extends Serializable { v ...