ホームページ > バックエンド開発 > PHPチュートリアル > マジックメソッド __set() インスタンスの詳細な説明 (PHP 上級オブジェクト指向チュートリアル)

マジックメソッド __set() インスタンスの詳細な説明 (PHP 上級オブジェクト指向チュートリアル)

巴扎黑
リリース: 2023-03-07 14:48:01
オリジナル
2647 人が閲覧しました

__set() の役割:

__set(): アクセスできない属性 (プライベート、保護、存在しない) に値を割り当てる場合、PHP は __set() メソッドを実行します。

__set() の機能は次のとおりであると上で述べました: アクセスできない属性 (private、protected、存在しない) に値を割り当てるとき、PHP は __set() メソッドを実行します。

これはどういう意味ですか?例えば、上記の例を例に挙げてみましょう。サルが好んで食べる桃をバナナに置き換えましたが、ルール上、$food の前のキーワードは保護されており
直接アクセスできませんが、$food に値を代入する必要があります。どうすればよいでしょうか。

<?php
class Monkey{
public $name;
protected $food;
function __construct($name,$food){
$this->name = $name;
$this->food = $food;
}
function sayHello(){
echo &#39;<br/>我是&#39; . $this->name . &#39;我喜欢吃&#39; . $this->food;
}
//魔术方法
function __get($pro_name){
//先判断$pro_name是否存在
if(isset($this -> $pro_name)){
return $this -> $pro_name;
}else{
echo &#39;属性值不存在&#39;;
}
}
function __set($pro_name,$value){
//先判断$pro_name是否存在
if(isset($this -> $pro_name)){
return $this -> $pro_name = $value;
}else{
echo &#39;属性值不存在&#39;;
}
$monkey = new Monkey(&#39;猴子&#39; , &#39;桃子&#39;)
$monkey -> sayHello();
echo &#39;猴子喜欢吃&#39; . $monkey -> food;
$monkey -> food = &#39;香蕉&#39;;
echo &#39;<br/>&#39;;
$monkey -> sayHello();
ログイン後にコピー

$food が保護されているため、アクセスは許可されていません。次に、それを実現するには __set() マジック メソッドを使用する必要があります。 __set() メソッドには、それぞれ変数名と変数値を表す 2 つのパラメーターが含まれています。この 2 つのパラメーターは省略できません。

以上がマジックメソッド __set() インスタンスの詳細な説明 (PHP 上級オブジェクト指向チュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート