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. Android 解决Glide 加载图片缓慢(第一次加载不出来图片)的Bug

  2. 使用本地计划任务定时关闭azure虚拟机

    本文包含以下内容 前提条件 如何实现定时关闭虚拟机 前提条件 Controller 机器上必须安装 Azure PowerShell,并且要在 PowerShell 里登录一次 Azure, 请参见: ...

  3. mybatis开发dao的方式

    mybatis基于传统dao的开发方式 第一步:开发接口 public interface UserDao { public User getUserById(int id) throws Excep ...

  4. iBrand 开源电商小程序 (Laravel API+ webpack + gulp + 原生小程序)

    iBrand 社交电商产品正式进入开源过程中了,我们制定了详细的开源计划,目前已经发布了 V1 的版本,后续的版本也在陆续整理完善中. 各个版本功能明细如下图: 3 个版本计划在今年春节前全部完成,可 ...

  5. IEEP-网络规划

    HCNP-R&S证书是公认人具备中小型企业网络构建和管理能力的专业人士   IEEP包含五个方面内容 1.网络规划与设计 2.网络实施与维护 3.网络排障 4.网络优化 5.网络割接     ...

  6. day5-基础 函数

     函数 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序 ...

  7. day1 python 介绍、基本语法、流程控制

    请查看我的云笔记链接: http://note.youdao.com/noteshare?id=0ea7425d3e3669800cb0d73f7ec8865d&sub=D87B4BF820C ...

  8. 常用的shell语句 【awk】去重,排列

    目的:从日志access.log中,筛选出IP来,并统计每个IP出现的次数,然后显示出来. 因为:awk = 扒IP  shot = 排序  uniq =  去重 所以:awk '{print $1} ...

  9. 实验验证stack和heap中是否被设初值

    #include <iostream> #include <stdlib.h> using namespace std; class Foo { public: int i; ...

  10. 如何使用Kubernetes里的NetworkPolicy

    创建一个类型为NetworkPolicy的Kubernetes对象的yaml文件. 第九行的podSelector指定这个NetworkPolicy施加在哪些pod上,通过label来做pod的过滤. ...