php5 学习记要(2)
Jun 13, 2016 am 10:41 AM
function
gt
name
this
user
php5 学习记录(2)
一、重载性能
1、属性和方法的重载
php 允许通过实现特殊的代理方法对属性的访问和方法的调用进行重载,这些代理方法将在相关的属性或者方法不存在时调用。这种特性让你在中端这些动作并定义你自己的功能时获得巨大的灵活性。
你可以实现下面的方法原型:
function __get($property) // 传递属性的名字,并且返回属性值
function __set($property, $value) // 传递属性的名字和新的值
function __call($method, $args) // 传递方法的名字和一个数字索引的数组,数字包含传递的参数,第一个参数的索引是0。
?
?
class Users { private $arr = array(); function __get($name) { return $this->arr[$name] === NULL ? 'null' : $this->arr[$name]; } function __set($name, $value) { $this->arr[$name] = $value; }}$user = new Users();$user->a = 'xiezheng';print $user->a;
ログイン後にコピー
__call()具有很多用途,它主要用来监控一个对象中的其他方法。如果你试着调用一个对象中不存在的方法,__call方法将会被自动调用。
?
class HelloWorld { function display($count) { for($i=0; $i'; return $count; }}class HelloWorldCall { private $obj; function __construct() { $this->obj = new HelloWorld(); } function __call($method, $args) { return call_user_func_array(array($this->obj, $method), $args); }}$hwc = new HelloWorldCall();print $hwc->display(3);
ログイン後にコピー
?
2、使用数组语句访问的重载。
为了让你的类能够重载数组语句的访问,你的类需要实现ArrayAccess接口。
bool offsetExists($index)
mined offsetGet($index)
void offsetSet($index, $new_value)
void offsetUnset($index)
以上是ArrayAccess需要实现的方法。
?
?
class Users implements ArrayAccess { private $uname; function offsetExists($name) { return $this->uname === NULL; } function offsetGet($name) { return $this->offsetExists($this->uname) ? 'NULL' : $this->uname; } function offsetSet($name, $value) { $this->uname = $value; } function offsetUnset($name) { $this->uname = null; }}$user = new Users();$user['name'] = 'xiezheng';// unset($user['name']);print $user['name'];
ログイン後にコピー
?
?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7297
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29

