Gọi phương thức chồng với _call() PHP (phần 6)

Gọi phương thức chồng với _call()

Như là việc bạn sử dụng _get() và _set() để xử lí đọc và viết những đặc tính không tồn
tại, bạn cũng có thể sử dụng _call() để gọi những phương thức không tồn tại trong class.
Chính tạo một phương thức tên là _call() trong class của bạn cái chấp nhận tên phương thức
không tồn tại như một chuỗi kí tự và bất cứ thông số nào được truyền tới phương thức không
tồn tại như một mảng. Phương thức trả về một giá trị (nếu có) quay về lại code gọi.
_call() rất là hữu dụng nếu bạn muốn tạo một class gói cái không chứa nhiều chức năng bản
thân nó, nhưng thay vào đó trao đi các lời gọi phương thức tới các hàm bên ngoài hay các APIs
cho xử lí.
Ví dụ sau thể hiện cho bạn làm cách nào bạn có thể sử dụng _call() để tạo một class gói. Trong
trường hợp này,class cung cấp một giao diện hướng đối tượng tới 3 hàm string tích hợp của PHP.
Lưu đoạn script như clever_string.php trong thư mục root tài liệu của bạn, sau đó chạy nó trên
trình duyệt của bạn:

< !DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd” >
< html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en” >
< head >
< title > Creating a Wrapper Class with __call() < /title >
< link rel=”stylesheet” type=”text/css” href=”common.css” / >
< /head >
< body >
< h1 > Creating a Wrapper Class with __call() < /h1 >
< ?php
class CleverString {
private $_theString = “”;
private static $_allowedFunctions = array( “strlen”, “strtoupper”,
“strpos” );
public function setString( $stringVal ) {
$this- > theString = $stringVal;
}
public function getString() {
return $this- > theString;
}
public function __call( $methodName, $arguments ) {
if ( in_array( $methodName, CleverString::$_allowedFunctions ) ) {
array_unshift( $arguments, $this- > theString );
return call_user_func_array( $methodName, $arguments );
} else {
die ( “ < p > Method ‘CleverString::$methodName’ doesn’t exist < /p > ” );
}
}
}
$myString = new CleverString;
$myString- > setString( “Hello!” );
echo “ < p > The string is: “ . $myString- > getString() . “ < /p > ”;
echo “ < p > The length of the string is: “ . $myString- > strlen() . “ < /p > ”;
echo “ < p > The string in uppercase letters is: “ . $myString- > strtoupper() .
“ < /p > ”;
echo “ < p > The letter ‘e’ occurs at position: “ . $myString- > strpos( “e” ) .
“ < /p > ”;
$myString- > madeUpMethod();
? >
< /body >
< /html >

Khi được chạy, đoạn script sinh đầu ra như ảnh dưới:

script

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *