php __autoload namespace 解释一下

2016-12-28  本文已影响10人  黄123

好久没写东西,人懒了,为了对抗懒惰的基因,每周都写一些东西吧。
现在介绍 php 的 __autoload和namespace的用法。我是用了自动加载的。
官网的介绍是 __autoload — 尝试加载未定义的类http://php.net/manual/zh/function.autoload.php
namespace 的官网介绍
http://php.net/manual-lookup.php?pattern=namespace&scope=quickref

以前:

<?php
class a{
    function haha(){
        echo 'haha';
    }
}

上面code/a.php

<?php
    require('code/a.php');
    $classA = new a();
    $classA->haha();

上面index.php

我是图.png

这样意思如果有一大推类加载。是不是变成这样

require('code/a.php');
require('code/b.php');
require('code/c.php');
require('code/d.php');
require('code/e.php');
.......

总之这样不是办法。
然后就用上了__autoload 和 namespace

<?php
namespace code;
class a{
    function haha(){
        echo 'haha';
    }
}
<?php
use code\a; 
function __autoload($className){
    $className = str_replace('\\', '/', $className);
    require($className . '.php');
}
    
    $classA = new a();
    $classA->haha();
    

额~很多框架里面都是这样写的。
之后
namespace code\xxx;
use code\xxx\a;

是图.jpg

然后,写多几次就会了。

上一篇下一篇

猜你喜欢

热点阅读