PHP函數參考04-PHP選項與信息函數認識

原文:
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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。

推薦閱讀更多精彩內容