ホームページ > バックエンド開発 > PHPチュートリアル > PHP での public、private、protected、abstract およびその他のキーワードの使用

PHP での public、private、protected、abstract およびその他のキーワードの使用

小云云
リリース: 2023-03-19 06:34:02
オリジナル
1596 人が閲覧しました

この記事では主に、PHP における public、private、protected、abstract などのキーワードの使用法について説明した記事を紹介します。これは非常に参考になるので、皆さんのお役に立てれば幸いです。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

PHP でよく使用されるキーワード

PHP には、関数やクラスを制限する多くのキーワードが含まれています。一般的に使用されるキーワードには、通常、abstract、final、interface、public、protected、private、static などが含まれます。以下では、これらを分析し、その使用法を整理します。 。

変数とメソッドのキーワード public、private、protected

public は、サブクラスで使用でき、インスタンス化後の呼び出しもサポートできます。

protected は保護されたことを意味し、アクセス許可は次のとおりです。サブクラスでアクセスされ、このクラス

privateはプライベートを意味し、現在のクラスでのみアクセスできます

<?php
//
/**
* Define MyClass
*/
class MyClass
{
 public $public = &#39;Public&#39;;
 protected $protected = &#39;Protected&#39;;
 private $private = &#39;Private&#39;;
 public function printHello()
 {
 echo $this->public;
 echo $this->protected;
 echo $this->private;
 }
 protected function pro_test(){
 var_dump(1);
 }
}
$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
//echo $obj->protected; // 这行会产生一个致命错误
//echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private
$obj->pro_test();//直接报错
?>
ログイン後にコピー

変数とメソッドのキーワードstatic

は、インスタンス化せずにクラス内で実装値またはメソッドを呼び出すことができます。同時に、staticで変更した変数には値を格納する機能もあります。 例えば、staticなしで実行した結果は以下のようになります。

<?php
function test(){
 $var=1;
 echo $var."</br>";
 $var++;
}
test();// 1
test();// 1
test();// 1
?>
ログイン後にコピー

変数にstaticを追加すると、次のようになります

<?php
function test(){
 static $var=1;
 echo $var."</br>";
 $var++;
}
test();// 1
test();// 2
test();// 3
?>
ログイン後にコピー

。これを PHP で実行する利点は理解できないかもしれないので、まず読者が JS にも精通していると仮定しましょう。JS には静的キーワードがないため、実装したい場合は、次のようなプログラムを作成する必要があります。各プログラム操作の結果を次の操作の基礎として保存できます。

var glo=0;
 function test(){
 glo++;
 document.writeln(glo);
 }
 test();
 test();
 test();
ログイン後にコピー

これにより、glo がグローバル変数にリークされます。さらに多くの変数が生成されると、メモリ リークが発生します (メモリ リークとは、メモリ領域を占有しすぎて解放されない変数を指します)

<script>
 var glo=0;
 function test(){
 glo++;
 document.writeln(glo);
 }
 test();// 1
 test();// 2
 test();// 3 
</script>
ログイン後にコピー

と比較すると、非常に似ています。静的を定義しない言語では、変数を維持し、メモリをリークせず、グローバル変数の悪用を引き起こしにくい(スコープがグローバルではないため)という利点があります

$age=0;
$age++;
function test1() {
 static $age = 100;
 $age++;
 echo $age."</br>";
}
function test2() {
 static $age = 1000;
 $age++;
 echo $age."</br>";
}
test1(); // 101
test2(); // 1001
ログイン後にコピー

クラスとメソッドのキーワードfinal

Final はクラスと関数を変更するためにのみ使用できます。たとえば、次のコードは直接エラーを報告します

class BaseClass {
 public $public = 'Public';
 function test() {
 echo "BaseClass::test() called\n";
 }
 final public function moreTesting() {
 echo "BaseClass::moreTesting() called\n";
 }
}
class ChildClass extends BaseClass {
 public function moreTesting() {
 echo "ChildClass::moreTesting() called\n";
 }
}
ログイン後にコピー

特別なキーワード インターフェイス、abstract

インターフェイスの重要性は、つまり、インターフェイスが実装されている場合、このインターフェイス クラスを使用するときは、内部にメソッドを実装する必要があり、これが統一された名前付けの役割を果たします。

クラスは複数のインターフェースを継承できます。インターフェース間の単一継承はextendsを通じて実現されます

サンプルコード:

<?php
interface testA{
 function funcA();
}
interface testB{
 function funcB();
}
interface testC extends testA {
 function funcC();
}
class run implements testC ,testB {
 public function funcA()
 {
 // TODO: Implement funcA() method.
 }
 public function funcB()
 {
 // TODO: Implement funcB() method.
 }
 public function funcC()
 {
 // TODO: Implement funcC() method.
 }
}
?>
ログイン後にコピー
Abstractは実際にはインターフェースと同じ機能を持ちます。インターフェース内のメソッドは実装する必要がありますが、抽象変更されたクラスには 1 つ以上の抽象変更されたメソッドが存在する可能性があるため、このように理解できます。インターフェースは一種の抽象です。 特殊なケース (すべてのメソッドが抽象メソッドである場合、実装する必要があります)。抽象には次の特性があります:

1. クラス内の少なくとも 1 つのメソッドが abstract キーワードを使用する限り、そのクラスは抽象であり、対応するキーワードを追加する必要があります。

2. 抽象メソッドには宣言部分のみが含まれます。メソッドです。メソッド本体はありません。

しかし、実際のアプリケーションでは、abstract にはこのようなシナリオがいくつかあると思います

1. 複数人でプログラミングする場合のパブリック部分の命名規則を標準化します (説明は不要ですが、原理はインターフェイスと同じです)

2.親が直接インスタンス化されないようにするには、

スタイル コードは次のとおりです:

<?php
abstract class shopping
{
 public function buy()
 {
 echo "buy";
 }
 public function loan()
 {
 echo "loan";
 }
}
class leslieBuy extends shopping
{
}
//$test1=new shopping;//直接语法错误
$leslieSie = new leslieBuy;
$leslieSie->loan();//打印出loan
?>
ログイン後にコピー
皆さんはその使い方を知っていますか?すぐに入手してください。


関連する推奨事項:

public、private、protected の使用例と差異分析

php オブジェクト指向 public private protected 3 つの修飾子のコード例

のアクセス修飾子 private と private についての簡単な説明php protectedとpublicの範囲

以上がPHP での public、private、protected、abstract およびその他のキーワードの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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