文档
分类
标签
目录结构
F:.│ Power.php│ Superman.php│└─IoC Power.php
Superman.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
<?phpnamespace IoC;//use Power\Power; //定义了命名空间也需要引入???? 不能用use自动加载?//已经确定了 必须的引入 框架里都是使用了自动加载程序 所以无需引用//比如composer//include_once 'Power.php';//两点需要注意的//一 autoload不能在有命名空间下使用//二 函数是不能再类里面写的 要么写在之前 要么写在方法里//spl_autoload_register现在建议用这个函数 不建议使用__autoload了 好像7.2就要把他删掉了//这两个存在哪一个都可以//不过这是加载相同命名空间下的文件spl_autoload_register(function($class){ if($class){ $file = $class.'.php'; if(file_exists($file)){ include_once $file; } }});class Superman{ protected $power; public function __construct() { // spl_autoload_register(function($class){ // if($class){ // $file = $class.'.php'; // if(file_exists($file)){ // include_once $file; // } // } // }); //所以这个是IoC/下的Power 而不是和Superman同目录下的Power 因注册的是相同命名空间IoC下的文件 $this->power = new Power(999,100); }// public function makeNew(){// $this->power = new Power(999,100);// } public function getPower(){ //var_dump($this->power); return $this->power; }}//明白了这个函数链是怎么回事了$man = new Superman;echo $man->getPower()->getAbility();echo "<br>";//这个class的用法 必须没经过实例化的类 经过实例化的类是动态的会报错echo Power::class;
7 / 54