原文:
PHP函數參考04-PHP選項與信息函數認識 - 9ong
PHP函數參考05-zip與phar壓縮包 - 9ong
這些PHP選項和信息函數能讓我們獲得許多關于PHP本身的參數。比如:運行時的配置,被加載的擴展,版本等。
-
assert/assert_options
assert在php7中是語言結構,不再是函數。
assert() 會檢查指定的 assertion 并在結果為 FALSE 時采取適當的行動。
```php
assert_options(ASSERT_ACTIVE,1);
assert_options(ASSERT_BAIL,0);
assert_options(ASSERT_CALLBACK,"assert_fail");
function assert_fail($file, $line, $code){
echo "<hr>Assertion Failed:
File '$file'<br />
Line '$line'<br />
Code '$code'<br /><hr />";
}
assert(1==2);
echo "end.";
```
正常輸出:
```
Assertion Failed: File '/var/www/html/php-shiyanchang/FunctionsReference/assert.php'
Line '26'
Code ''
Warning: assert(): assert(1 == 2) failed in /var/www/html/php-shiyanchang/FunctionsReference/assert.php on line 26
end.
```
很多人參考官方文檔去測試例子,發現assert根本不工作,找遍國內網站,基本找不到解決方案。比如上面的例子復制過去執行,發現只返回:end.,沒有其他信息可以參考:
[Assert not working in php. So simple. What am I doing wrong? - Stack Overflow](https://stackoverflow.com/questions/40129963/assert-not-working-in-php-so-simple-what-am-i-doing-wrong)
問題在于php.ini配置,zend.assertions = 1時,php才會編譯assertions:
```
[Assertion]
; Switch whether to compile assertions at all (to have no overhead at run-time)
; -1: Do not compile at all
; 0: Jump over assertion at run-time
; 1: Execute assertions
; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1)
; Default Value: 1
; Development Value: 1
; Production Value: -1
; http://php.net/zend.assertions
;zend.assertions = -1
zend.assertions = 1
```
extension_loaded — 檢查一個擴展是否已經加載
get_current_user — 獲取當前 PHP 腳本所有者名稱
get_defined_constants — 返回所有常量的關聯數組,鍵是常量名,值是常量值
get_extension_funcs — 返回模塊函數名稱的數組
-
getenv — 獲取一個環境變量的值
$ip = getenv('REMOTE_ADDR'); // 或簡單僅使用全局變量($_SERVER 或 $_ENV) $ip = $_SERVER['REMOTE_ADDR'];
getlastmod — 獲取頁面(即當前腳本文件)最后修改的時間
ini_get_all — 獲取所有配置選項
ini_get — 獲取一個配置選項的值
ini_set — 為一個配置選項設置值
ini_restore — 恢復配置選項的值
memory_get_usage — 返回分配給 PHP 的內存量
memory_get_peak_usage — 返回分配給 PHP 內存的峰值
php_ini_loaded_file — 取得已加載的 php.ini 文件的路徑
php_ini_scanned_files — 返回從額外 ini 目錄里解析的 .ini 文件列表
php_sapi_name — 返回 web 服務器和 PHP 之間的接口類型。比如:CGI PHP
php_uname — 返回運行 PHP 的系統的有關信息
phpinfo — 輸出關于 PHP 配置的信息
phpversion — 獲取當前的PHP版本
-
set_time_limit — 設置腳本最大執行時間
設置允許腳本運行的時間,單位為秒。如果超過了此設置,腳本返回一個致命的錯誤。默認值為30秒,或者是在php.ini的max_execution_time被定義的值。
當此函數被調用時,set_time_limit()會從0開始重新啟動超時計數器。換句話說,如果超時默認是30秒,在腳本運行了了25秒時調用 set_time_limit(20),那么,腳本在超時之前可運行總時間為45秒。
注意:只影響腳本本身執行的時間。只影響腳本本身執行的時間。任何發生在諸如使用system()的系統調用,流操作,數據庫操作等的腳本執行的最大時間不包括其中,當該腳本已運行。
-
sys_get_temp_dir — 返回用于臨時文件的目錄
// 使用 sys_get_temp_dir() 在目錄里創建臨時文件 $temp_file = tempnam(sys_get_temp_dir(), 'Tux'); //結果創建文件:/tmp/TsinghYEccT
-
version_compare — 對比兩個「PHP 規范化」的版本數字字符串
其實這個函數也可以用來對比規范化的產品版本數字字符串,比如:團隊管理08-研發約定與規范 - 產品號管理 - 9ong
注意:是數字,數字字符串,但甚至支持帶有字符的字符串,主要要有數字版本號。
if (version_compare('v7.1.1.beta', 'v7.2.0') >= 0) { print_r("我們使用的版本大于7.2.0\n"); }else{ print_r("我們使用的版本小于7.2.0\n"); }
很多公司內部的框架對于這種滿足數字字符串版本號的判斷,都是自己封裝函數來處理,還經常處理不好,入門php的開發人員還是應該通讀一次php手冊,至少一次。
原文:
PHP函數參考04-PHP選項與信息函數認識 - 9ong
PHP函數參考05-zip與phar壓縮包 - 9ong