php設計模式--命名空間與自動載入

來源:互聯網
上載者:User

標籤:clu   dir   面向   命名   log   規劃   ati   test   越來越大   

關於命名空間:

  最早的php是沒有命名空間的概念的,這樣不能存在相同名稱的類或者函數,當項目變大了之後,產生衝突的可能性就高了,代碼量也會變大,為了規劃,從php5.3開始對命名空間就支援了。

說明代碼:

test1.php
<?php//聲明命名空間namespace Test1;function test(){echo "test1<br/>";}
test2.php<?php//聲明命名空間namespace Test2;function test(){echo "test2<br/>";}

將test1.php ,test2.php引入到test.php中:

test.php<?php//引入test1,test2require ‘test1.php‘;require ‘test2.php‘;//命名空間的使用Test1\test();Test2\test();

 如果不使用命名空間,顯而易見php會報函數名重複致命錯誤,如果使用命令空間結果如下:

test1test2

 

關於自動載入: 

  之前的php都是通過include或者require來引入php的,當項目越來越大的時候,如果一個php檔案需要引入幾十個php類的時候,那就會引入幾十行,這樣對管理代碼和開發來說是很不方便的。在php5.2之後就提供了類的自動載入功能。

   在php5.2中提供了__autoload 方法來引入,但是當多個php檔案同時使用此方法時會有函數名重複的可能,在php5.3中這個函數被廢棄了,系統提供了一個spl_auto_register()的方法。當換成spl_auto_register自動載入類之後,可避免衝突。

Test3.php
class Test3{static function test(){echo "test3-class<br/>";}}
Test4.php
<?phpclass Test4{static function test(){echo "test4-class<br/>";}}
<?phpspl_autoload_register(‘autoload1‘);//函數名作為參數傳入spl_autoload_register(‘autoload2‘);//函數名作為參數傳入可支援多個Test3::test(); Test4::test(); function autoload1($class) {   require __DIR__.‘/‘.$class.‘.php‘; }function autoload2($class){require __DIR__.‘/‘.$class.‘.php‘;}

  

結果如下:

test3-classtest4-class

 

* 當php執行過程中發現你使用的類並不存在,這時候,php會把那個類名(Test3)告訴自動載入函數(autoload),然後我們只需要引入相關類就可以了。

總結:命名空間和自動載入對我們寫好物件導向開發是很重要的。

php設計模式--命名空間與自動載入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.