PHP 第六週函式學習記錄

zerocoder發表於2020-07-12

timezone_identifiers_list()

作用

返回帶有所有時區識別符號的數值陣列。

用法

timezone_identifiers_list(what,country);

what    可選。規定一個 DateTimeZone 類常量
        1 = AFRICA
        2 = AMERICA
        4 = ANTARCTICA
        8 = ARCTIC
        16 = ASIA
        32 = ATLANTIC
        64 = AUSTRALIA
        128 = EUROPE
        256 = INDIAN
        512 = PACIFIC
        1024 = UTC
        2047 = ALL
        4095 = ALL_WITH_BC
        4096 = PER_COUNTRY

測試案例

print_r(timezone_identifiers_list(1));

結果

Array
(
    [0] => Africa/Abidjan
    [1] => Africa/Accra
    [2] => Africa/Addis_Ababa
    [3] => Africa/Algiers
    [4] => Africa/Asmara
    [5] => Africa/Bamako
    [6] => Africa/Bangui
    [7] => Africa/Banjul
    [8] => Africa/Bissau
    [9] => Africa/Blantyre
    [10] => Africa/Brazzaville
    [11] => Africa/Bujumbura
    [12] => Africa/Cairo
    [13] => Africa/Casablanca
    [14] => Africa/Ceuta
    [15] => Africa/Conakry
    [16] => Africa/Dakar
    [17] => Africa/Dar_es_Salaam
    [18] => Africa/Djibouti
    [19] => Africa/Douala
    [20] => Africa/El_Aaiun
    [21] => Africa/Freetown
    [22] => Africa/Gaborone
    [23] => Africa/Harare
    [24] => Africa/Johannesburg
    [25] => Africa/Juba
    [26] => Africa/Kampala
    [27] => Africa/Khartoum
    [28] => Africa/Kigali
    [29] => Africa/Kinshasa
    [30] => Africa/Lagos
    [31] => Africa/Libreville
    [32] => Africa/Lome
    [33] => Africa/Luanda
    [34] => Africa/Lubumbashi
    [35] => Africa/Lusaka
    [36] => Africa/Malabo
    [37] => Africa/Maputo
    [38] => Africa/Maseru
    [39] => Africa/Mbabane
    [40] => Africa/Mogadishu
    [41] => Africa/Monrovia
    [42] => Africa/Nairobi
    [43] => Africa/Ndjamena
    [44] => Africa/Niamey
    [45] => Africa/Nouakchott
    [46] => Africa/Ouagadougou
    [47] => Africa/Porto-Novo
    [48] => Africa/Sao_Tome
    [49] => Africa/Tripoli
    [50] => Africa/Tunis
    [51] => Africa/Windhoek
)

timezone_location_get()

作用

返回指定時區的位置資訊

用法

timezone_location_get(object);

測試案例

$tz=timezone_open("Asia/Taipei");
print_r(timezone_location_get($tz));

結果

Array ( 
    [country_code] => TW 
    [latitude] => 25.05
    [longitude] => 121.5 
    [comments] => 
)

timezone_name_from_abbr()

作用

根據時區縮略語返回時區名稱

用法

timezone_name_from_abbr(abbr,gmtoffset,isdst);
abbr    必需。規定時區縮略語。
gmtoffset    可選。規定相對於 GMT 的以秒為單位的偏移量。預設為 -1,表示返回第一個被找到的匹配縮略語的時區。否則搜尋精確的偏移量。如果沒有找到,則返回任意偏移量的第一個時區。
isdst    可選。規定夏令時指示器。
        -1 = 預設。搜尋時是否考慮時區的夏令時
         1 = 表示 gmtoffset 是受夏令時影響的一個偏移量
         0 = 表示 gmtoffset 是不受夏令時影響的一個偏移量

測試案例

echo timezone_name_from_abbr("EST") . "<br>";
echo timezone_name_from_abbr("",7200,0);

結果

America/New_York
Europe/Helsinki

timezone_name_get()

作用

返回時區的名稱

用法

timezone_name_get(object);
object    必需。規定一個 DateTimeZone 物件。

測試案例

$tz=timezone_open("Europe/Paris");
echo timezone_name_get($tz);

結果

Europe/Paris

timezone_offset_get()

作用

返回相對於 GMT 的時區偏移

用法

timezone_offset_get(object,datetime);

測試案例

$tz=timezone_open("Asia/Taipei");
$dateTimeOslo=date_create("now",timezone_open("Europe/Oslo"));
echo timezone_offset_get($tz,$dateTimeOslo);

結果

28800

timezone_open()

作用

建立一個新的 DateTimeZone 物件

用法

timezone_open(timezone);

測試案例

$tz=timezone_open("Europe/Paris");
echo timezone_name_get($tz);

結果

Europe/Paris

timezone_version_get()

作用

函式返回時區資料庫的版本。

用法

timezone_open(timezone);

測試案例

echo timezone_version_get();

結果

2012.2

chdir()

作用

 函式改變當前的目錄。

用法

chdir(directory);

測試案例

// Get current directory
echo getcwd() . "<br>";

// Change directory
chdir("images");

// Get current directory
echo getcwd();

結果

/home/php
/home/php/images

chroot()

作用

 函式改變當前程式的根目錄為 directory,並把當前工作目錄改為 "/"。

注意:該函式需要 root 許可權,且僅在 GNUBSD 系統上僅當使用 CLICGI、嵌入式 SAPI 時可用。該函式沒有在 Windows 平臺上實現。

用法

chroot(directory);

測試案例

// Change root directory
chroot("/path/to/chroot/");

// Get current directory
echo getcwd();

結果

/

closedir()

作用

函式關閉目錄控制程式碼

用法

closedir(dir_handle);

測試案例

$dir = "/images/";

// Open a directory, and read its contents
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
            echo "filename:" . $file . "<br>";
        }
        closedir($dh);
    }
}

結果

filename: cat.gif
filename: dog.gif
filename: horse.gif

dir()

作用

dir() 函式返回 Directory 類的例項。該函式用於讀取一個目錄,包含如下:
    給定的要開啟的目錄
    dir() 的 handle 和 path 兩個屬性是可用的
    handle 和 path 屬性有三個方法:read()、rewind()close()

用法

dir(directory,context);

測試案例

$d = dir(getcwd());

echo "Handle: " . $d->handle . "<br>";
echo "Path: " . $d->path . "<br>";

while (($file = $d->read()) !== false){
echo "filename: " . $file . "<br>";
}
$d->close();

結果

Handle: Resource id #2
Path: /etc/php
filename: .
filename: ..
filename: ajax.gif
filename: books.xml
filename: cdcatalog.xml
filename: cd_catalog.xml
filename: default.html
filename: demo_array.html
filename: demo_array.htm
...
...
...

getcwd()

作用

函式返回當前工作目錄。

用法

getcwd();

測試案例

echo getcwd()

結果

/home/php

opendir()

作用

函式開啟目錄控制程式碼。

用法

opendir(path,context);

測試案例

$dir = "/images/";

// Open a directory, and read its contents
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
            echo "filename:" . $file . "<br>";
        }
        closedir($dh);
    }
}

結果

filename: cat.gif
filename: dog.gif
filename: horse.gif

readdir()

作用

函式返回目錄中下一個檔案的檔名。

用法

readdir(dir_handle);

測試案例

$dir = "/images/";

// Open a directory, and read its contents
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
            echo "filename:" . $file . "<br>";
        }
        closedir($dh);
    }
}

結果

filename: cat.gif
filename: dog.gif
filename: horse.gif

rewinddir()

作用

函式重置由 opendir() 建立的目錄控制程式碼。

用法

rewinddir(dir_handle);

測試案例

$dir = "/images/";

// Open a directory, and read its contents
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        // List files in images directory
        while (($file = readdir($dh)) !== false){
            echo "filename:" . $file . "<br>";
        }
        rewinddir();
        // List once again files in images directory
        while (($file = readdir($dh)) !== false){
            echo "filename:" . $file . "<br>";
        }
        closedir($dh);
    }
}

結果

filename: cat.gif
filename: dog.gif
filename: horse.gif
filename: cat.gif
filename: dog.gif
filename: horse.gif

scandir()

作用

函式返回指定目錄中的檔案和目錄的陣列。

用法

scandir(directory,sorting_order,context);
directory        必需。規定要掃描的目錄。
sorting_order    可選。規定排列順序。預設是 0,表示按字母升序排列。如果設定為 SCANDIR_SORT_DESCENDING 或者 1,則表示按字母降序排列。如果設定為 SCANDIR_SORT_NONE,則返回未排列的結果。
context            可選。規定目錄控制程式碼的環境。context 是可修改目錄流的行為的一套選項。

測試案例

$dir = "/images/";

// Sort in ascending order - this is default
$a = scandir($dir);

// Sort in descending order
$b = scandir($dir,1);

print_r($a);
print_r($b);

結果

Array
(
[0] => .
[1] => ..
[2] => cat.gif
[3] => dog.gif
[4] => horse.gif
[5] => myimages
)
Array
(
[0] => myimages
[1] => horse.gif
[2] => dog.gif
[3] => cat.gif
[4] => ..
[5] => .
)

debug_backtrace()

作用

debug_backtrace() 函式生成 backtrace。
該函式顯示由 debug_backtrace() 函式程式碼生成的資料。

返回一個關聯陣列。下面是可能返回的元素:
|名稱|型別|描述|
|—-|—-|—-|
|function| string| 當前的函式名。|
|line| integer |當前的行號。|
|file| string| 當前的檔名。|
|class| string| 當前的類名。|
|object| object |當前物件。|
|type|string|當前的呼叫型別,可能的呼叫:
返回:”->” - 方法呼叫
返回:”::” - 靜態方法呼叫
返回 nothing - 函式呼叫
|
|args| array| 如果在函式中,列出函式引數。如果在被引用的檔案中,列出被引用的檔名|
用法

debug_backtrace()

測試案例

<?php
function one($str1, $str2)
{
    two("Glenn", "Quagmire");
}
function two($str1, $str2)
{
    three("Cleveland", "Brown");
}
function three($str1, $str2)
{
    print_r(debug_backtrace());
}
one("Peter", "Griffin");
?>

結果

Array
(
    [0] => Array
    (
        [file] => C:webfoldertest.php
        [line] => 7
        [function] => three
        [args] => Array
                (
                [0] => Cleveland
                [1] => Brown
                )
    )
    [1] => Array
    (
        [file] => C:webfoldertest.php
        [line] => 3
        [function] => two
        [args] => Array
                (
                [0] => Glenn
                [1] => Quagmire
                )
    )
    [2] => Array
    (
        [file] => C:webfoldertest.php
        [line] => 14
        [function] => one
        [args] => Array
        (
            [0] => Peter
            [1] => Griffin
        )
    )
)

debug_print_backtrace()

作用

debug_print_backtrace() 函式列印 backtrace。
該函式顯示由 debug_print_backtrace() 函式程式碼生成的資料。

用法

debug_print_backtrace()

測試案例

<?php
function one($str1, $str2)
{
    two("Glenn", "Quagmire");
}
function two($str1, $str2)
{
    three("Cleveland", "Brown");
}
function three($str1, $str2)
{
    debug_print_backtrace();
}

one("Peter", "Griffin");
?>

結果

#0 three(Cleveland, Brown) called at [C:webfoldertest.php:8]
#1 two(Glenn, Quagmire) called at [C:webfoldertest.php:4]
#2 one(Peter, Griffin) called at [C:webfoldertest.php:15]

error_get_last()

作用

error_get_last() 函式獲得最後發生的錯誤。
該函式以陣列的形式返回最後發生的錯誤。如果沒有錯誤發生則返回 NULL

返回的錯誤陣列包含 4 個鍵名和鍵值:

  • [type] - 錯誤型別
  • [message] - 錯誤訊息
  • [file] - 發生錯誤所在的檔案
  • [line] - 發生錯誤所在的行

用法

debug_print_backtrace()

測試案例

<?php
    echo $test;
    print_r(error_get_last());
?>

結果

Array
(
    [type] => 8
    [message] => Undefined variable: test
    [file] => C:webfoldertest.php
    [line] => 2
)

error_log()

作用

error_log() 函式向伺服器錯誤記錄、檔案或遠端目標傳送一個錯誤。
如果成功該函式返回 TRUE,如果失敗該函式返回 FALSE

返回的錯誤陣列包含 4 個鍵名和鍵值:

  • [type] - 錯誤型別
  • [message] - 錯誤訊息
  • [file] - 發生錯誤所在的檔案
  • [line] - 發生錯誤所在的行

用法

error_log(error,type,destination,headers)
引數描述
error必需。要記錄的錯誤訊息。
type 可選。規定錯誤記錄的型別。
可能的記錄型別:
  • 0 - 預設。根據在 php.ini 檔案中的 error_log 配置,錯誤被髮送到伺服器日誌系統或檔案。
  • 1 - 錯誤被髮送到 destination 引數中的地址。只有該型別使用 headers 引數。
  • 2 - 通過 PHP debugging 連線來傳送錯誤。該選項只在 PHP 3 中可用。
  • 3 - 錯誤傳送到檔案目標字串。
destination可選。規定向何處傳送錯誤訊息。該引數的值依賴於 "type" 引數的值。
headers可選。只在 "type" 引數為 1 時使用。規定附加的頭部,比如 From, Cc 以及 Bcc。附加頭部由 CRLF (\r\n) 分隔。 注意:在傳送電子郵件時,必須包含 From 頭部。可以在 php.ini 檔案中或者通過此引數設定。

測試案例

// 下面的例項傳送一封帶有自定義錯誤的電子郵件:
$test=2;

if ($test>1)
{
    error_log("A custom error has been triggered",1,"someone@example.com","From: webmaster@example.com");
}

結果

// 上面程式碼接收到的郵件如下所示:
A custom error has been triggered

error_reporting()

作用

error_reporting() 函式規定報告哪個錯誤。
該函式設定當前指令碼的錯誤報告級別。
該函式返回舊的錯誤報告級別。

用法

error_reporting(report_level)

report_level

常量 描述
1 E_ERROR 執行時致命的錯誤。不能修復的錯誤。停止執行指令碼。
2 E_WARNING 執行時非致命的錯誤。沒有停止執行指令碼。
4 E_PARSE 編譯時的解析錯誤。解析錯誤應該只由解析器生成。
8 E_NOTICE 執行時的通知。指令碼發現可能是一個錯誤,但也可能在正常執行指令碼時發生。
16 E_CORE_ERROR PHP 啟動時的致命錯誤。這就如同 PHP 核心的 E_ERROR。
32 E_CORE_WARNING PHP 啟動時的非致命錯誤。這就如同 PHP 核心的 E_WARNING。
64 E_COMPILE_ERROR 編譯時致命的錯誤。這就如同由 Zend 指令碼引擎生成的 E_ERROR。
128 E_COMPILE_WARNING 編譯時非致命的錯誤。這就如同由 Zend 指令碼引擎生成的 E_WARNING。
256 E_USER_ERROR 使用者生成的致命錯誤。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_ERROR。
512 E_USER_WARNING 使用者生成的非致命錯誤。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_WARNING。
1024 E_USER_NOTICE 使用者生成的通知。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_NOTICE。
2048 E_STRICT 執行時的通知。PHP 建議您改變程式碼,以提高程式碼的互用性和相容性。
4096 E_RECOVERABLE_ERROR 可捕獲的致命錯誤。這就如同一個可以由使用者定義的控制程式碼捕獲的 E_ERROR(見 set_error_handler())。
8191 E_ALL 所有的錯誤和警告的級別,除了 E_STRICT(自 PHP 6.0 起,E_STRICT 將作為 E_ALL的一部分)。
測試案例
```
//Disable error reporting
error_reporting(0);

//Report runtime errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

//Report all errors
error_reporting(E_ALL);


### restore_error_handler()
作用

restore_error_handler() 函式恢復之前的錯誤處理程式。
該函式用於在通過 set_error_handler() 函式改變後恢復之前的錯誤處理程式。
該函式總是返回 TRUE。


用法

restore_error_handler()


測試案例

<?php //custom error handler function function customError($errno, $errstr, $errfile, $errline) { echo "Custom error: [$errno] $errstr
"; echo " Error on line $errline in $errfile
"; }

//set user-defined error handler set_error_handler("customError");

$test=2;

//trigger error if ($test>1) { trigger_error("A custom error has been triggered"); }

//restore built-in error handler restore_error_handler();

//trigger error again if ($test>1) { trigger_error("A custom error has been triggered"); } ?>

結果

Custom error: [1024] A custom error has been triggered
Error on line 14 in C:webfoldertest.php

Notice: A custom error has been triggered in
C:webfoldertest.php on line 21


### restore_exception_handler()
作用

restore_exception_handler() 函式恢復之前的異常處理程式。
該函式用於在通過 set_exception_handler() 函式改變後恢復之前的異常處理程式。
該函式總是返回 TRUE。


用法

restore_exception_handler()


測試案例

<?php restore_exception_handler();

throw new Exception('Uncaught Exception occured'); ?>

結果

Fatal error: Uncaught exception ‘Exception’ with message
‘Uncaught Exception occured’ in C:webfoldertest.php:4
Stack trace: #0 {main} thrown in C:webfoldertest.php on line 4


### set_error_handler()
作用

set_error_handler() 函式設定使用者自定義的錯誤處理函式。
該函式用於建立執行期間的使用者自己的錯誤處理方法。
該函式返回舊的錯誤處理程式,如果失敗則返回 NULL。


用法

set_error_handler(error_function,error_types)
error_function 必需。規定發生錯誤時執行的函式。
error_types 可選。規定在哪個錯誤報告級別會顯示使用者定義的錯誤。預設是 “E_ALL”。

error_function(error_level, error_message, error_file, error_line, error_context)
error_level 必需的。規定使用者自定義的錯誤的錯誤報告級別。必須是值數字。可能的錯誤報告級別詳見下面的表格。
error_message 必需的。規定使用者自定義的錯誤的錯誤訊息。
error_file 可選。規定發生錯誤的檔名。
error_line 可選。規定發生錯誤的行號。
error_context 可選。規定指向活躍符號表中發生錯誤的陣列。換句話說,error_context 將包含一個說明每個變數引發錯誤的存在範圍的陣列。

E_WARNING 執行時非致命的錯誤。沒有停止執行指令碼。
E_NOTICE 執行時的通知。指令碼發現可能是一個錯誤,但也可能在正常執行指令碼時發生。
E_USER_ERROR 使用者生成的致命錯誤。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_ERROR。
E_USER_WARNING 使用者生成的非致命錯誤。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_WARNING。
E_USER_NOTICE 使用者生成的通知。這就如同由程式設計師使用 PHP 函式 trigger_error() 生成的 E_NOTICE。
E_RECOVERABLE_ERROR 可捕獲的致命錯誤。這就如同一個可以由使用者定義的控制程式碼捕獲的 E_ERROR(見 set_error_handler())。
E_ALL 所有的錯誤和警告的級別,除了 E_STRICT(自 PHP 6.0 起,E_STRICT 將作為 E_ALL的一部分)。



測試案例

<?php //error handler function function customError($errno, $errstr, $errfile, $errline) { echo "Custom error: [$errno] $errstr
"; echo " Error on line $errline in $errfile
"; echo "Ending Script"; die(); }

//set error handler set_error_handler("customError");

$test=2;

//trigger error if ($test>1) { trigger_error("A custom error has been triggered"); } ?>

結果

Custom error: [1024] A custom error has been triggered
Error on line 19 in C:webfoldertest.php
Ending Script


### set_exception_handler()
作用

set_exception_handler() 函式設定使用者自定義的異常處理函式。
該函式用於建立執行期間的使用者自己的異常處理方法。
該函式返回舊的異常處理程式,如果失敗則返回 NULL。


用法

set_exception_handler(exception_function)
exception_function 必需。規定未捕獲的異常發生時呼叫的函式。
該函式必須在呼叫 set_exception_handler() 函式之前定義。這個異常處理函式需要需要一個引數,即丟擲的 exception 物件。



測試案例

<?php <?php function myException($exception) { echo "Exception: " , $exception->getMessage(); }

set_exception_handler('myException');

throw new Exception('Uncaught Exception occurred'); ?>

結果

Exception: Uncaught Exception occurred
```

參考

《PHP 5 Directory 函式 | 菜鳥教程》

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章