記事[PHP]名前空間とオートローダの関係

目的

本稿の目的は、パフォーマンスの少し混乱ロジックです名前空間の使用キーワードとステップが読み込ま自動的に実行される新しいクラス名の2つのステップを、指定することで、このアイデアが正常である、のは、それを解読しましょう

名前空間(名前空間)

PHPは5.3の名前空間から参加し、私は、javaについて少し知っているので、名前空間はそれが名前空間を必要とする理由を理解するのはとても簡単ですか!主にクラス/関数を解決するために/一定の内部対立が独自のクラス/関数/定数、および第三者を書きます

リソースの使用は、そのような参照の名前空間で示されるように、キーワードを使用する必要があります

require_once("apanly/BrowserDetector/Browser.php");
use apanly\BrowserDetector\Browser;
new Browser();

自動的にロード

PHPは、および必要の使用を減らすために、主に、自動ロード機能をカスタマイズすることができます。例えば

function myLoader($classname){
   $class_file = $classname . '.php';
   if ( file_exists($class_file) ){
      require_once($class_file);
   }else{
      echo "[ autoload error ]".$class_file." not found";
      die(0);
   }
}
spl_autoload_register("myLoader");

疑い

関数を読み込む自動的に実行されますときに、自動的に関数やオブジェクトの新しい使用を記録しますmyLoaderを実行するための時間ですか?

答えは:新しいオブジェクトのロード機能が自動的に実行されるとき

例ショー

テストを使用

<?php
//根据class名字 找文件
function myLoader($classname){
   $class_file = $classname . '.php';
   if ( file_exists($class_file) ){
      require_once($class_file);
   }else{
      echo "[ autoload error ]".$class_file." not found";
      die(0);
   }
}

spl_autoload_register("myLoader");

use \apanly\test\test;
new test();

出力なし

新しいテスト

<?php
//根据class名字 找文件
function myLoader($classname){
   $class_file = $classname . '.php';
   if ( file_exists($class_file) ){
      require_once($class_file);
   }else{
      echo "[ autoload error ]".$class_file." not found";
      die(0);
   }
}

spl_autoload_register("myLoader");

use \apanly\test\test;


出力:

[ autoload error ]apanly\test\test.php not found

結論

名前空間の使用は、新しいオブジェクトバーバラは、自動ロードされたトリガであることを示しているのみを使用。名前空間と、自動的に負荷が半分のダイムではありません

参考資料



オリジナル住所: [PHP]名前空間と、自動的には関係のロード
ラベルを: 使用して    オートロード    の名前空間を   

インテリジェント勧告

ます。https://my.oschina.net/54php/blog/794269で再現

おすすめ

転載: blog.csdn.net/weixin_34161083/article/details/91634826