ホームページ バックエンド開発 PHPチュートリアル PHPオブジェクト指向アクセス制御パブリック、プライベート、プロテクト詳細解説_PHPチュートリアル

PHPオブジェクト指向アクセス制御パブリック、プライベート、プロテクト詳細解説_PHPチュートリアル

Jul 13, 2016 pm 05:12 PM
php private protected public について 利用 物体 コントロール 記事 アクセス 詳しい説明 のために

この記事では、例を使用して PHP5 のオブジェクト指向アクセス制御の詳細を説明しています。パブリック、プライベート、および保護が必要な友人は参照できます。

PHP5 ではオブジェクト指向メカニズムが強化され、パブリック、プライベート、プロテクトなどの一般的なオブジェクト指向アクセス制御メカニズムが追加されました。文字通りに理解するには:

パブリックは間違いなくパブリックを意味し、クラス自体とその外部サブクラスの両方がこのプロパティまたはメソッドにアクセスできることを意味します。

プライベートは英語でプライベートを意味します。これはクラス自体内でのみアクセスできます。インスタンス化されたオブジェクトハンドルはプロパティやメソッドにアクセスできず、サブクラスもそれらにアクセスできません。

Protected 保護されたプロパティまたはメソッド。このプロパティまたはメソッドは、クラス自体またはサブクラスによってのみ内部的にアクセスでき、インスタンス化されたオブジェクト ハンドルにはアクセスできません。

次に、この問題について説明する例を挙げてみましょう。

宝石博物館の管理者シャオ・リーがいて、倉庫内の宝石をルビー、サファイア、エメラルドの 3 つのカテゴリーに分類しているとします。そして属性は分けられており、ルビーは国内の誰もが訪れることができる(公開)、サファイアは管理者シャオ・リーの家族に伝わる(保護)、エメラルドはシャオ・リーが山で見たものです。 (プライベート)。

そして、次のように考えることができます:

公開ラベルが付いたルビーはその国の所有物であり、その国の合法的国民である限り、すべての人が所有しており、閲覧したり写真を撮ったりすることができます。

保護 これは保護されています。シャオ・リーの家族(シャオ・リーの子供または孫)のみが特定の部屋を訪問して写真を撮ることができます。彼らは部屋の外を見ることを許可されていません。

これはプライベートです。シャオ・リーは写真を撮ることはおろか、他の人に知られたくないので、シャオ・リーの部屋にいるシャオ・リーだけが見ることができます。


コードは次のとおりですコードをコピー
エラー報告(E_ALL);

クラステスト{

パブリック $パブリック

プライベート$プライベート

保護された $protected

静的 $インスタンス

パブリック関数 __construct(){

$this->public = 'public
';

$this->private = 'プライベート
';

$this->protected = '保護されています
';

}

静的関数 Tank(){

if (!isset(self::$instance[get_class()]))

{

$c = get_class();

self::$instance = 新しい $c

}

self::$インスタンスを返す

}

パブリック関数 pub_function() {

echo "パブリック機能をリクエストします
"; echo $this->public

echo $this->private; //プライベート、内部的に呼び出すことができます

echo $this->protected; //保護されており、内部的に呼び出すことができます

$this->pri_function(); //プライベートメソッド、内部的に呼び出すことができます

$this->pro_function(); //保護されたメソッド、内部的に呼び出すことができます

}

保護された関数 pro_function(){

echo "保護された機能をリクエストしています
";

}

プライベート関数pri_function(){

echo "プライベート機能をリクエストしています
";

}

}

$test = テスト::タンク();

echo $test->public

echo $test->private; //致命的なエラー: プライベート プロパティ test::$private にアクセスできません

echo $test->protected; //致命的なエラー: 保護されたプロパティ test::$protected にアクセスできません

$test->pub_function();

$test->pro_function(); //致命的なエラー: コンテキストから保護されたメソッド test::pro_function() を呼び出します

$test->pri_function(); //致命的なエラー: コンテキストからプライベート メソッド test::pri_function() を呼び出します

?>

gt;public = 'public
';  $this->gt;private = 'private
';  $this->protected = 'protected
';  } 静的関数 Tank(){ if (!isset(self::$instance[get_class()])) { $c = get_class();  self::$instance = 新しい $c;  } self::$instance を返します。  } public function pub_function() { echo "パブリック関数をリクエストしました
";  エコー $this->public;  echo $this->private;        //private,内部可调用 echo $this->protected;      //保護されており、内部で使用可能 $this->pri_function();      //private メソッド、内部で使用可能 $this->pro_function();      //protected メソッド、内部で使用可能 } protected function pro_function(){ echo "保護された関数を要求します
";  } プライベート関数 pri_function(){ echo "プライベート関数をリクエストしました
";  $test = test::tank();エコー $test->public; echo $test->private;    //致命的エラー: プライベート プロパティにアクセスできません test::$private echo $test->protected;  //致命的エラー: 保護されたプロパティ test::$protected $test->pub_function(); にアクセスできません。 $test->pro_function();  //致命的なエラー: コンテキスト $test->pri_function() から保護されたメソッド test::pro_function() を呼び出します。  //致命的なエラー: コンテキストからプライベート メソッド test::pri_function() を呼び出します ?>

上の例では、私は見ることができます、
public: クラスの内部調整に使用でき、インスタンス化に使用できます。 private: クラスの内部調整に使用でき、インスタンス化に使用できます。 protected: 内部調整用にクラス化でき、調整用ロックを例示できます。

クラステスト{

パブリック $public; 

プライベート$プライベート; 

保護 $protected; 

静的$インスタンス; 

パブリック関数 __construct(){

$this->public = 'public
'; 

$this->private = 'private
'; 

$this->protected = 'protected
'; 

}

protected function tank(){ //私有メソッド不可继承,换成public,protected

if (!isset(self::$instance[get_class()]))

{

$c = get_class(); 

self::$instance = 新しい $c; 

}

self::$instance を返します。 

}

パブリック関数 pub_function() {

echo「パブリック機能をリクエストしました
」; 

echo $this->public; 

}

保護された関数 pro_function(){

echo「保護された機能をリクエストしました
」; 

echo $this->保護; 

}

プライベート 関数 pri_function(){

echo「プライベート機能をリクエストしました
」; 

echo $this->プライベート; 

}

}

クラス test1 はテストを拡張します{

パブリック関数 __construct(){

親::タンク(); 

親::__construct(); 

}

公共機能タンク(){

echo $this->public; 

echo $this->プライベート; //注意: 未定義のプロパティ: test1::$private

echo $this->保護; 

$this->pub_function(); 

$this->pro_function(); 

$this->pri_function(); //致命的なエラー: コンテキスト「test1」からプライベート メソッド test::pri_function() を呼び出します

}

パブリック関数pro_extends_function(){

echo「あなたはextends_protected機能をリクエストしています
」; 

}

パブリック関数 pri_extends_function(){

echo「extends_private 関数をリクエストしました
」; 

}

}

エラー報告(E_ALL);

$test = 新しい test1();

$test ->tank(); //サブクラスと親クラスには同じ名前のプロパティとメソッドがあります。サブクラスをインスタンス化すると、サブクラスのプロパティとメソッドが親クラスのプロパティとメソッドを上書きします。

?>

http://www.bkjia.com/PHPjc/629261.html

tru​​ehttp://www.bkjia.com/PHPjc/629261.html技術記事この記事では、PHP5 のオブジェクト指向アクセス制御のパブリック、プライベート、プロテクトについて詳しく説明するために例を使用しています。必要な場合は参照してください。 PHP5ではオブジェクト指向の仕組みが強化されています...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles