杨庆荣的博客

工作之余接单:公司产品展示网站建设、电商网站建设、小程序、app开发。+86 13714715608

spl_autoload_register()自动加载你的php类,不用require_once啦。

点击 11221    创建时间 2013-08-10 11:51:21

<p>spl_autoload_register()通过声名一个函数,用来自动加载一个类。当你实例化时,当前上下文中没有找到这个类,他就会通过注册的函数来加载你所需要的类。是不是很方便呢?对于要加载多个类的的程序,写代码的时间大大节省了。</p>

<p> </p>

<p>我们来做一个例子:</p>

<p>api/client.php</p>

<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">&lt;?php<br /> namespace api;<br /> class client{<br />     <br />     public function call()<br />     {<br />         echo "call...";<br />     }<br /> }</div>

<p>api/server.php</p>

<div style="background:#eee; border:1px solid #ccc; padding:5px 10px"> <p>&lt;?php<br /> namespace api;<br /> class server{<br />     public function accept(){<br />         echo "accepting....";<br />     }<br /> }</p>

<p> </p> </div>

<p>test.php</p>

<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">&lt;?php function autoload_class ($className) {<br />         include(DIR . "/" . $className . ".php");<br />  }<br />  spl_autoload_register("autoload_class");<br />  <br />  use api\client;<br />  $c = new client();<br />  $c-&gt;call();  use api\server;<br />  $s = new server();<br />  $s-&gt;accept();</div>

<p>输出:</p>

<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">call...accepting....</div>

<p>按以前的方式,我们需要写</p>

<div style="background:#eee; border:1px solid #ccc; padding:5px 10px">require_once "api/client.php";<br /> require_once "api/client.php";</div>

<p>如果类多,需要加载很多次,特别麻烦。建议不要用__autoload(),这个函数以后可能会被弃用。</p>

上一篇: git did not exit cleanly (exit code 128)的解决办法
下一篇: rong framework 1.0 发布了