PHP は 5.3 以降、名前空間を導入しました。この機能により、PHP はオブジェクト指向の設計プロセスにおいてより標準化され、明確になります。同時に、自動読み込みモードがフレームワークのアーキテクチャに完全に統合され、フレームワーク自体が改善されました。パフォーマンス - オンデマンドでロード
実際にはルート名前空間の下に名前空間宣言はありません
<?php/*** 命名空间为Project* 则类的完整名为 Project\Web 而不是Web*/namespace Project;class Web{ function __construct() { echo __NAMESPACE__ . '<br/>'; echo __CLASS__ . '<br/>'; }}//若不已'\'开头则为使用当前命名空间下的类new Web();//当然我们可以指出完整的类名来 \Project\Web 为根命名空间下的Project命名空间下的Web类new \Project\Web();?>
1. 現在名前空間宣言がない場合、デフォルトでルート名前空間になります。 🎜>
例:
<?phpnamespace Web;use Common\Tools as CommonTools;class Tools {}//如同linux的路径//当前目录为 usr, 则 local 意味当前目录usr下的local,但 /var 则意味根目录下的 varnew Tools(); //从当前为命名空间Web开始,所以Tools的完整类名为Web\Toolsnew \Common\Tools(); //从根命名空间'\'开始,访问的是Common\Toolsnew CommonTools(); //因为使用了use声明,就如同将\Common\Tools 别名成 CommonTools?>
use Web\Tools;
新規作成時に、現在のワークスペースにこのクラスが存在するかどうかを確認し、存在しない場合は、自動ロード関数が記述されているかどうかを確認します。
存在しない場合は、エラーが発生します。報告されない場合は、自動ロード関数が呼び出されます。
インスタンス化する完全なクラス名を渡します
new Tools(); //这时会实例化名为Web\Tools的类,若没有include进来,且有些自动载入函数,则会将Web\Tools传递给次函数,你可以通过传递的类名做自己的引入处理
たとえば、Yii フレームワーク
//当前命名空间namespace app\Controllers;//声明Controller为yii\web命名空间下的,此后若有用到Controller的地方,完整名皆为yii\web\Controlleruse yii\web\Controller;//继承也会要求解析此类,所以当前工作目录会要求检查是否有yii\web\Controller的类,可惜没有//但系统会在给你一次几乎,看是否有自动加载函数,Yii当然有,传递给加载函数'yii\web\Controller'作为参数//加载函数解析类名发现是以yii开头的,则做路径映射,将yii\web\Controller映射为其框架类库文件的路径//即vendor\yiisoft\yii2, 拼接上web\Controller 拼接上.php后缀,就获取到了这个文件//文件里保存的类的命名空间为yii\web,类名为Controllerclass IndexController extends Controller {}