yaf. use_namespace=1的情况下,controller怎么使用namespace

发布于 2022-09-01 19:10:20 字数 404 浏览 12 评论 0

请教个问题:
yaf. use_namespace=1的情况下,controller怎么使用namespace?

比如:Index.php的内容

use Yaf\Controller_Abstract;
use Yaf\Dispatcher;
class IndexController extends Controller_Abstract
{
    public function indexAction()
    {
        Dispatcher::getInstance()->disableView(0);
        echo 'Great,It Works!';
    }
}

没法加namespace了,文件名是Index.php

路过的怎么处理的,说说

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

热风软妹 2022-09-08 19:10:20

php.ini 开启

yaf.use_namespace = 1
yaf.use_spl_autoload = 1

定义加载器 可以在公用function中

/** 自动加载器 modules */
function autoload_modules($class){
    $class = str_replace('\\', DIRECTORY_SEPARATOR, $class);
    
    ...

    $file = APPLICATION_PATH . DIRECTORY_SEPARATOR . 'xxxx' . $class . '.php';
    if( file_exists($file) )
        Loader::import($file);
}

然后在 Bootstrap 文件中用 spl_autoload_register 自定义加载器

<?php
use \Yaf\Bootstrap_Abstract;
use \Yaf\Dispatcher;
use \Yaf\Loader;

class Bootstrap extends Bootstrap_Abstract
{
    /**  自动加载器 */
    function _initAutoload(Yaf\Dispatcher $dispatcher)
    {
        Loader::import('xxxx/function.php');
        spl_autoload_register('autoload_modules');
    }
}

不过开启 use_spl_autoload 会影响效率

开启的情况下, Yaf在加载不成功的情况下, 会继续让PHP的自动加载函数加载, 从性能考虑, 除非特殊情况, 否则保持这个选项关闭

use_spl_autoload

短叹 2022-09-08 19:10:20

yaf中的controller,model都是属于根命名空间,无需再去定义,自动引入机制这是写在扩展中的,没必要处理

苏大泽ㄣ 2022-09-08 19:10:20

我也想知道答案。 原本想

<?php
namespace App\Controllers;

class IndexController extends Yaf\Controller_Abstract
{
    function indexAction()
    {
        // do sth.
    }
}

一直报错。去掉namespace App\Controllers就行。不知道怎么办了。

软糯酥胸 2022-09-08 19:10:20

也是一直报错,原来是index里加了 namesapce App\Controllers

正确的姿势是:默认情况下controller里是不用写namespace的

假面具 2022-09-08 19:10:20

https://github.com/gaohuia/yaf

专门解决这个问题的Yaf版本.

无法言说的痛 2022-09-08 19:10:20

个人总觉得在一个文件里写一堆的use ......;不太美观。如果跨项目调用 这个文件,会不会出错呢。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文