Heim > Backend-Entwicklung > PHP-Tutorial > yaf. use_namespace=1的情况下,controller怎么使用namespace

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

WBOY
Freigeben: 2016-06-06 20:26:34
Original
2636 Leute haben es durchsucht

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

比如:Index.php的内容

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

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

路过的怎么处理的,说说

回复内容:

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

比如:Index.php的内容

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

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

路过的怎么处理的,说说

我也想知道答案。 原本想

<code><?php namespace App\Controllers;

class IndexController extends Yaf\Controller_Abstract
{
    function indexAction()
    {
        // do sth.
    }
}
</code></code>
Nach dem Login kopieren

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

php.ini 开启

<code>yaf.use_namespace = 1
yaf.use_spl_autoload = 1</code>
Nach dem Login kopieren

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

<code>/** 自动加载器 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);
}</code>
Nach dem Login kopieren

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

<code><?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');
    }
}</code></code>
Nach dem Login kopieren

不过开启 use_spl_autoload 会影响效率

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

use_spl_autoload

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage