日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP学习笔记——Php文件引入

發布時間:2023/12/20 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP学习笔记——Php文件引入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在工作日常開發中,我最常用的文件引用莫過于include(include_once),以及require(require_once),這兩種引用已經滿足了日常簡單CGI的開發需要,但是當深入了解PHP框架的內容,就會發現單單這兩個關鍵字遠遠不夠,本文整理了部分php文件引用所涉及的知識。

?

首先簡要的介紹一下include和require的用法

1.include

被包含文件先按參數給出的路徑尋找,如果沒有給出目錄(只有文件名)時則按照 include_path(定義于php配置文件)指定的目錄尋找。如果在 include_path 下沒找到該文件則 include 最后才在調用腳本文件所在的目錄和當前工作目錄下尋找。

?

2.require語句

require include 幾乎完全一樣,除了處理失敗的方式不同之外。require 在出錯時產生 E_COMPILE_ERROR 級別的錯誤。換句話說將導致腳本中止,而 include 只產生警告(E_WARNING),腳本會繼續運行。

?

3.autoload機制

__autoloader函數是默認用于載入未知PHP類的函數,當再php代碼中出現了未知類時,程序將會自動調用該函數,函數原型及一種簡單的實現如下

function __autoload($classname) {$filename = "./". $classname .".php";include_once($filename);}

?

通常在各個類型不同的類中可以實現自己的__autoload()函數,如果希望注冊自己的__autoLoade函數則可以使用spl中的spl_autoload_register(),該函數可以將自定義的函數放入autoloader隊列當中,當autoloader被觸發是,將會依次調用隊列中的函數。

spl_autoload_register()原型如下

?

bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )

?

spl_autoload_register可以被調用多次,將多個自定義的回調函數插入到autoload函數隊列當中。

?

?

__autoloader()函數在ZEND引擎中有一個默認的實現,就是spl_autoload(),當不愿意自己實現__autoloader()函數的時候,可以使用這個php自帶的載入函數,通常該函數會和spl_autoload_extensions()函數一起使用,spl_autoloader_extensions()可以指定所包含類所在文件的擴展名,spl_autoload()函數會依據類名+擴展名的形式,在include_path當中尋找對應類所在的文件。之后在代碼中調用不含參數的spl_autoload_register()就可以在該程序中調用默認的spl_autoload()函數。

?

A. class.php

<?phpclass A{ function write(){echo “I am A”;}}?>

?

?

B.php

<?phpspl_autoload_extensions(“.class.php”);spl_autoload_register();$a=new A(); $a->write(); // I am A?>

?

?

spl_autoload_call()函數的目的是為了讓我們可以手動去調用spl_autoload_register()注冊隊列中的回調函數,常規情況下,只有遇到未知類才會調用autoloader隊列中的回調函數,spl_autoload_call可以實現手動調用,依次調用隊列中的回調函數直到成功加載到未知類。

A. php

<?phpclass A{}?>

?

?

B. php

<?phpfunction A($class){ echo "A";};function B($class) {echo "B";include($class.".php");};spl_autoload_register(A);spl_autoload_register(B);spl_autoload_call("A"); //輸出 AB?>

?

?

4.use 關鍵字

use語句可以引用其他名空間中的類。Php名空間的作用跟其他語言的名空間作用一樣,用于解決第三方的類中變量及函數的沖突問題。

A.php

<?phpnamespace TEST;class A{function myfunc(){echo "this A::myfunc \n";}}

?

?

B.php

<?phpuse TEST\A;require_once("A.php");class B{function myfunc(){print "this B::myfunc \n";}}$b=new B();$b->myfunc();$a=new A;$a->myfunc();

?

輸出:

this B::myfunc?

this A::myfunc

轉載于:https://www.cnblogs.com/sworddance/p/4280736.html

總結

以上是生活随笔為你收集整理的PHP学习笔记——Php文件引入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。