PHPのオブジェクト指向OOPのマジックメソッド
本篇文章主要介绍了浅谈PHP中的面向对象OOP中的魔术方法 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
一、什么是魔术方法:
PHP为我们提供了一系列用开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数。
例如:
function construct(){}
在new一个新对象时自动调用此函数
二、PHP中都有那些魔术方法,以及它们的作用:
1.construct():构造函数,new对象时自动调用
eg:
class Person{ public $name; public $age; function construct($name,$age){ $this->name=$name; $this->age=$age; } }
在new新的Person对象时会自动调用construct()函数,将传入的参数分别赋给$name,$age。
2.destruct():析构函数,当一个对象被销毁前自动调用
class Person{ public $name; public $age; function destruct(){ echo "这个对象被销毁了"; } }
同上所述,对象被销毁时执行此魔术方法
3.get():访问类中私有属性时自动调用,传递读取属性名,返回$this->属性名
class Person{ private $name; public $age; function get($name){ return $this->$name; } }
如上代码,$name被设为私有属性后不能直接通过$this->name;的方式读取,因此需要设置get()魔术方法来读取。
4.set():给类的私有属性赋值时自动调用,传递需设置的属性名,属性值
class Person{ private $name; public $age; function set($key,$value){ $this->$key=$value; } }
同get()方法,私有属性不能通过$this->name="aaa";的方式直接设置,需要设置set()方法,传入的参数分别是属性名和属性值。
5.isset():使用isset检测对象私有属性时调用,传递检测的属性名,返回isset($this->属性名)
class Person{ private $name; public $age; function isset($name){ return isset($this->$name); } }
使用isset检测对象私有属性时调用,其他同上。
6.unset():使用unset()函数删除对象私有属性时调用,传递删除的属性名,方法中执行unset($this->属性名)
class Person{ private $name; public $age; function unset($name){ unset($this->$name); } }
同上,在用unset()函数删除私有属性时调用。
7.toString():使用echo打印对象时调用,返回打印对象时想要显示的内容,返回必须是字符串
class Person{ public $name; public $age; function toString(){ $str = <<<str 您要打印的内容是:<br> \$name=>{$this->name};<br> \$age=>{$this->age};<br> str; return $str; } }
使用echo打印对象时调用,返回打印对象时想要显示的内容。
8.call():调用一个类中未定义的或未公开的方法时自动调用,传递被调用的函数名及参数列表
class Person{ public $name; public $age; function call($funcName,$funcParams){ echo "您调用的函数{$funcName},参数列表"; print_r($funcParams); echo "不存在/未公开"; } } $zhangsan=new Person(); $zhangsan->say(1,2,3);
如代码所示,调用不存在的say(1,2,3);时,会打印
您调用的函数way,参数列表Array ( [0] => 123 ) 不存在
9.clone():当使用clone关键字,克隆一个对象时自动调用,作用是为新克隆的对象初始化赋值
class Person{ public $name; public $age; function clone(){ $this->name="lisi"; } } $zhangsan=new Person("zhangsan",24); $lisi=clone $zhangsan; echo $lisi->name;
打印出的结果是"lisi",而不是"zhangsan"。
10.sleep():对象序列化时自动调用,返回一个数组,数组中的值就是可以序列化的属性
class Person{ public $name; public $age; function sleep(){ return array("name","age"); } }
如上述代码,在用serialize()序列化对象时只有"name","age"属性会被序列化。
11.wakeup():对象反序列化时自动调用,为反序列化新产生的对象进行初始化赋值
class Person{ public $name; public $age; function wakeup(){ $this -> name = "lisi"; } }
将对象序列化后再反序列化,同时给对象的name属性赋初值为"lisi"。
12.autolode():需要在类外部声明函数,当实例化一个未声明的类时自动调用,传递实例化的类名,可以使用类名自动加载对应的类文件。
function autoload($className){ include "class/".strtolower($className).".class.php"; } $zhangsan=new Person(); $zhangsan->say();
如上述代码,Person类不存在时调用autolode()方法,载入写在文件外的类,"class/".strtolower($className).".class.php";就是类文件的相对路径,$className就是
不在本文件中的类的类名,因此在创建外部类文件时命名方式必须是小写的类名.class.php。autolode()方法也是惟一一个不用写在类中的魔术方法。
以上就是PHP中的魔术方法,合理利用这些方法可以轻松实现对象的各种操作。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
以上がPHPのオブジェクト指向OOPのマジックメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
