Skip to content

kaiyulee/modern-yaf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Modern Yaf

Use Yaf modern way

WIP...


目录结构

├── app
│   ├── controllers
│   │   ├── Error.php
│   │   └── Index.php
│   ├── entities
│   ├── library
│   │   ├── Controller.php
│   │   ├── Model.php
│   │   └── View.php
│   ├── models
│   │   └── Base.php
│   ├── modules
│   │   └── Weather
│   ├── plugins
│   │   └── tmpl.php
│   ├── views
│   │   ├── compiled-cache
│   │   ├── index
│   │   └── test
│   └── Bootstrap.php
├── conf
│   ├── application.ini
│   └── database.ini
├── database
├── public
│   ├── css
│   ├── img
│   ├── js
│   └── index.php
├── vendor
│   ├── ...
│   └── autoload.php
├── README.md
├── composer.json
└── composer.lock

类的加载

使用命名空间(namespace)与包管理(composer)

基类及一些库

放在 app/library 下,如 Model.php

controller 类的加载:

Yaf 会根据uri来进行判断,如果uri是 模块/控制器/操作 即我们说的分组的情况下, 则在 app/modules/module-name/controllers/ 文件夹下查找; 如果只有两段,则会在 app/controllers/文件夹下查找

model 类的加载:

Yaf 调用 new xxxModel(); 是在app/models/ 文件夹下寻找xxx.php类文件的,框架中也依然保留,同时为了结构化、条理性,在 app/modules/module-name下新建了models文件夹,同时在 Bootstrap.php 中注册了app/modules/module-name/models文件夹下的类的自动加载规则,这里的 **module-name **是根据Yaf\Application::app()->getRequest()->getRequestUri()uri 来做处理的,详细见代码。 module-name/models 下的类文件并不遵循 Yaf Model 类的命名规则,有自己的灵活性。开发中我们一般的操作可能是:

  • module-name/models下创建 Abc model 类,文件名是 Abc.php
  • model Abc 继承 Model.php 基类

像:

<?php
# 注意,是Abc,而不是 AbcModel, 如果是AbcModel,加载的则是 app/models 下的类
class Abc extends Model 
{
    # properties & methods
}
  • 在 controller 中实例化

像:

<?php
    ...

    $Abc = new Abc();
    $Abc->method_name();

    ...

VIEW 视图

引入 Twig 模板引擎

Q & A

问:如果module-name/models下的类与app/library下的冲突怎么办?

答:按照 spl_autoload 的机制,先找到谁就先调用谁。由于 yaf 的 app/library下的类先于我们在注册,所以一般情况下调用的是 app/library中的类;一般情况下我们也遵从这样的安排。当然,如必要,这也是可以调整的,详见 spl_autoload_register 方法的第三个参数 prepend,为真时,表示将我们将要注册的自动加载方法前置,就实现了与上述相反的情况。

About

Use yaf the modern way

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published