ホームページ > バックエンド開発 > PHPチュートリアル > PHP での public、private、protected、abstract およびその他のキーワードの使用法について詳しく説明します。

PHP での public、private、protected、abstract およびその他のキーワードの使用法について詳しく説明します。

jacklove
リリース: 2023-04-02 12:24:02
オリジナル
1940 人が閲覧しました

以下のエディターが、PHP における public、private、protected、abstract などのキーワードの使用法について詳しく説明した記事を共有します。この記事は非常に参考になるので、皆さんのお役に立てれば幸いです。エディターに従って見てみましょう。

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

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

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

public は最大の権限を持ち、サブクラスで使用することも、サポートされることもできます。インスタンス化、

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

private はプライベート、のみを意味します。キーワード static

# である可能性があります。 ##

<?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();//直接报错
?>
ログイン後にコピー

## 現在のクラスで変数とメソッドにアクセスできます #静的関数は、値または値を有効にすることです。

静的に変更された変数は、インスタンス化せずにクラス内で呼び出されるメソッドです。同時に、静的に変更された変数には、値を格納する機能があります。たとえば、静的を使用しない場合、実行結果は次のようになります:

<?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>
ログイン後にコピー

そのため、static を定義していない言語と比較して、変数を保持できるという利点があり、メモリリークがありません。そして、グローバル変数を悪用するのは簡単ではありません (スコープがグローバルではないため)

$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
ログイン後にコピー

クラスの鍵およびメソッドfinalfinal という単語は、クラスと関数を変更するためにのみ使用できます。final を使用した後は、継承できません。たとえば、次のコードはエラーを直接報告します

# #

class BaseClass {
 public $public = &#39;Public&#39;;
 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";
 }
}
ログイン後にコピー

#特別なキーワード インターフェイス、抽象

##インターフェイスの意味は、プログラミング スタイルを標準化することです。実装されているかどうかを想像してください。インターフェイスがある場合、このインターフェイス クラスを使用するときは、内部のメソッドを実装する必要があります。これは、統一された名前付けの役割を果たします。 クラスは複数のインターフェイスを継承できます。インターフェイス間の単一の継承は、extends によって実現されます。クラスとインターフェイス間の関係は、implements によって確立されます。

サンプル コード:

<?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 の機能は実際にはインターフェースの機能と同じですが、インターフェース内のすべてのメソッドを実装する必要があります。ただし、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
?>
ログイン後にコピー

上記の記事では、PHP における public、private、protected、abstract などのキーワードの使用法について詳しく説明しています。これは編集者が共有したすべての内容です。参考になれば幸いです。また、PHP 中国語をサポートしていただければ幸いです。 Webサイト。

興味があるかもしれない記事:

PHP が同じ値を持つ配列で新しい配列インスタンスを形成する方法についての説明

PHP 文字列の長さが一致しない問題の解決方法の詳細な説明

$argv および $argc 構成メソッドのコマンド ライン実行php script_php の例


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

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