PHP命名空間實(shí)現(xiàn)自動(dòng)加載引入文件
PHP 命名空間(namespace)
PHP 命名空間(namespace)是在PHP 5.3中加入的,如果你學(xué)過(guò)C#和Java,那命名空間就不算什么新事物。 不過(guò)在PHP當(dāng)中還是有著相當(dāng)重要的意義。
PHP 命名空間可以解決以下兩類問(wèn)題:
- 用戶編寫(xiě)的代碼與PHP內(nèi)部的類/函數(shù)/常量或第三方類/函數(shù)/常量之間的名字沖突。
- 為很長(zhǎng)的標(biāo)識(shí)符名稱(通常是為了緩解第一類問(wèn)題而定義的)創(chuàng)建一個(gè)別名(或簡(jiǎn)短)的名稱,提高源代碼的可讀性。
雖然使用了命名空間,但我們?cè)谑褂玫臅r(shí)候也需要引入PHP文件,這就造成命名空間有時(shí)候不會(huì)減少我們的工作量,反而增加了我們的工作量。
自動(dòng)加載
自動(dòng)加載就是為了解決有了命名空間還讓我們引入文件的問(wèn)題。
文件結(jié)構(gòu):
自動(dòng)加載有幾種方式去實(shí)現(xiàn):
1.__autoload()方法
index.php文件 function __autoload($class){ if ($class) { $file = str_replace('\\', '/', $class); $file .= '.php'; if (file_exists($file)) { include $file; } } } $class = new \app\Index(); $class->index();
2.spl_autoload_register()方法,如果用spl_autoload_register,autoload就失效了。
index.php文件 spl_autoload_register(function ($class) { if ($class) { $file = str_replace('\\', '/', $class); $file .= '.php'; if (file_exists($file)) { include $file; } } }); $class = new \app\Index(); $class->index();
3.使用composer的自動(dòng)加載實(shí)現(xiàn)。
在文件的跟目錄創(chuàng)建composer.json文件。"app\\": "app"指向命名空間的文件存放的地址
{ "autoload": { "psr-4": { "app\\": "app" } } }
使用命令composer install,生成vendor文件在根目錄index.php 引入vendor/autoload.php
require 'vendor/autoload.php';
PSR-0
PHP的命名空間必須與絕對(duì)路徑一致。
類名首字母大寫(xiě)。
除了入口文件之外,其他的PHP文件必須是一個(gè)類,不能有執(zhí)行的代碼。
到此這篇關(guān)于PHP命名空間實(shí)現(xiàn)自動(dòng)加載引入文件的文章就介紹到這了,更多相關(guān)PHP自動(dòng)加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP中通過(guò)fopen()函數(shù)訪問(wèn)遠(yuǎn)程文件示例
這篇文章主要介紹了PHP中通過(guò)fopen()函數(shù)訪問(wèn)遠(yuǎn)程文件示例,本文講解了fopen函數(shù)的作用、使用它需要的配置問(wèn)題、超時(shí)問(wèn)題等內(nèi)容,并給出了代碼實(shí)例,需要的朋友可以參考下2014-11-11php中隱形字符65279(utf-8的BOM頭)問(wèn)題
這篇文章主要介紹了php中隱形字符65279問(wèn)題解決方法,其實(shí)就是utf-8文件的BOM頭,本文給出了一個(gè)刪除PHP文件BOM頭的小程序,需要的朋友可以參考下2014-08-08PHP腳本監(jiān)控Nginx 502錯(cuò)誤并自動(dòng)重啟php-fpm
這篇文章主要介紹了PHP腳本監(jiān)控Nginx 502錯(cuò)誤并自動(dòng)重啟php-fpm,本文直接給出實(shí)現(xiàn)代碼,然后放到cron中執(zhí)行,需要的朋友可以參考下2015-05-05火車(chē)頭discuz6.1 完美采集的php接口文件
火車(chē)頭官方提供的discuz6.1的php接口比較粗糙,基本不能滿足需要,本人在采集的工作中使用的采集接口文件如下2009-09-09php運(yùn)行報(bào)錯(cuò)Call to undefined function curl_init()的最新解決方法
其實(shí)在網(wǎng)上很早之前就出現(xiàn)過(guò)這個(gè)問(wèn)題,網(wǎng)上百度了下,答案千篇一律,最近又遇到這個(gè)問(wèn)題,但是百度出來(lái)的問(wèn)題不能解決這個(gè)問(wèn)題了,所以只能翻墻找答案,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11php成功操作redis cluster集群的實(shí)例教程
這篇文章主要給大家介紹了關(guān)于php成功操作redis cluster集群的實(shí)例教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01php簡(jiǎn)單計(jì)算頁(yè)面加載時(shí)間的方法
這篇文章主要介紹了php簡(jiǎn)單計(jì)算頁(yè)面加載時(shí)間的方法,涉及php針對(duì)頁(yè)面加載時(shí)間的計(jì)算技巧,需要的朋友可以參考下2015-06-06php基于協(xié)程實(shí)現(xiàn)異步的方法分析
這篇文章主要介紹了php基于協(xié)程實(shí)現(xiàn)異步的方法,結(jié)合實(shí)例形式分析了php基于協(xié)程調(diào)度的異步操作實(shí)現(xiàn)方法,需要的朋友可以參考下2019-07-07PHP數(shù)組 為文章加關(guān)鍵字連接 文章內(nèi)容自動(dòng)加鏈接
PHP給文章加關(guān)鍵字連接,像163文章內(nèi)容自動(dòng)加鏈接效果,其實(shí)很多php網(wǎng)站管理系統(tǒng)里面都有,可以參考里面的代碼。2011-12-12