发布于 1970-01-01 08:00
  • 5 个回答
    • 我也想知道答案。 原本想

      <?php
      namespace App\Controllers;
      
      class IndexController extends Yaf\Controller_Abstract
      {
          function indexAction()
          {
              // do sth.
          }
      }
      

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

      2022-12-01 08:59 回答
    • 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-12-01 08:59 回答
    • 也是一直报错,原来是index里加了 namesapce App\Controllers

      2022-12-01 08:59 回答
    • yaf中的controller,model都是属于根命名空间,无需再去定义,自动引入机制这是写在扩展中的,没必要处理

      2022-12-01 08:59 回答
    • 个人总觉得在一个文件里写一堆的use ......;不太美观。如果跨项目调用 这个文件,会不会出错呢。

      2022-12-01 08:59 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有