PHP オブジェクト指向クラスの $this、static、final、const、self、および二重コロン: これらのキーワードの使用方法
PHP オブジェクト指向クラスでこれらのキーワード $this、static、final、const、self、および二重コロンを使用する方法。
PHP における this、self、parent の 3 つのキーワードの役割
3 つのキーワード this、self、parent の違いは、文字通り、より簡単ですこれを参考にして、私と父をそれぞれ理解してください。まず、いくつかの概念を確立しましょう。これら 3 つのキーワードがどこで使用されているかを簡単に説明します。これは現在のオブジェクトへのポインターです (C のポインターを使用して見てみましょう)、self は現在のクラス へのポインタ、parent は親クラス へのポインタです。ここでの説明にポインタを頻繁に使用しますが、これはおそらく、それを表現するのにこれ以上適した言語がないためです。
<?php <span style="color:#ff0000;">// this是指向当前对象的指针class test_this{ private $content; //定义变量 function __construct($content){ //定义构造函数 $this->content= $content; } function __destruct(){}//定义析构函数 function printContent(){//定义打印函数 echo $this->content.'<br>'; }}$test=new test_this('北京欢迎你!'); //实例化对象$test->printContent();//北京欢迎你!$test=new test_this('新年新气象!');//再一次实例化对象$test->printContent();//新年新气象!echo '<br>';<span style="color:#ff0000;">//self是指向类的本身,只跟类有关,跟任何对象实例无关</span>class test_self{ private static $first_count; //定义静态变量 private $last_count; function __construct(){ $this->last_count=++self::$first_count;//直接用self调用变量的值赋值给另一个变量 } function __destruct(){} function print_self(){ print($this->last_count); }}$abc=new test_self();//实例化对象$abc->print_self();//1echo '<br>';<span style="color:#ff0000;">//parent是指向父类的指针</span>class test_parent{ //基类 public $name; //定义姓名 父类成员需要定义为public,才能够在继承类中直接使用 this来调用。 function __construct($name){ $this->name=$name; }}class test_son extends test_parent{ //派生类 继承test_parent public $gender;//定义性别 public $age; //定义年龄 function __construct($gender,$age){ //继承类的构造函数 parent::__construct('nostop');//使用parent调用父类的构造函数,来进行对父类的实例化 $this->gender=$gender; $this->age=$age; } function __destruct(){} function print_info(){ echo $this->name.'是个'.$this->gender.',今年'.$this->age.'岁'.'<br>'; }}$nostop=new test_son('女性','22');//实例化test_son对象$nostop->print_info();//执行输出函数 nostop是个女性,今年23岁?>
$this
$this の意味現在のインスタンスでは、クラスの内部メソッドが const または static として宣言されていないプロパティにアクセスする場合、$this->value='phpernote'; という形式が使用されます。一般的な使用法は次のとおりです。$this-> 属性
$this-> メソッド
例は次のとおりです。 >
コードの表示 print
<span style="font-size:14px;"><?phpclass MyClass{ private $name; public function __construct($name){ $this->name=$name; } public function getname(){ return $this->name; } public function printName(){ echo $this->getname(); }}$myclass= new MyClass("I Like PHP");$myclass->printName();//输出:I Like PHP?></span>クラス内の現在のクラスのプロパティとメソッドを呼び出すメソッドは 3 つあります。self、parent です。 、$this、these 3 つのキーワードの違いは次のとおりです: self は現在のクラスを指すために使用され、parent は現在のクラスの親クラスを指すために使用されます。親クラス; $this は、クラス本体およびメソッド内で独自のプロパティを呼び出すために使用されます。
static
キーワードは self (クラス内で静的メンバーを呼び出すときに使用)、静的メンバーのクラス名 ( class クラス内の静的メンバーを呼び出すときに使用します)次のように静的変数を宣言します:
static $val='';
関数のスコープ内にのみ存在する変数。グローバル変数は代わりに使用されないため、関数の実行後に変数の値は失われません。 はすべての関数からアクセスされるため、保守が困難になる可能性があります。
クラスで static を使用する主な用途は 2 つあり、静的メンバーの定義と静的メソッドの定義です。静的メンバーは、次のようにすべてのインスタンス で有効な変数の値のみを保持します:
<?phpclass MyObject{ public static $myStaticVar=0; function myMethod(){ self::$myStaticVar+=2; echo self::$myStaticVar; }}$instance1=new MyObject();$instance1->myMethod();$instance2=new MyObject();$instance2->myMethod();//结果将分别打印2、4
<?phpclass Book{ static $num=0; public function showMe(){ echo"您是滴".self::$num."位访客"; self::$num++; }}$book1=new Book();$book1->showMe();echo"<br>";$book2=new Book();$book2->showMe();echo"<br>";echo"您是滴".Book::$num."位访客";?>結果は次のようになります:
あなたは 0 人の訪問者です
あなたは 1 人の訪問者です
あなたは 2 人の訪問者です
もう 1 つ注意すべき点は、クラス メソッドが静的である場合、アクセスするプロパティも静的である必要があります。
final
最後のクラスとメソッドは継承できず、メソッドはこのキーワードによって変更されますできませんでした。一般的な使用法は次のとおりです:<?phpfinal class MyClass{//此类将不允许被继承 final function fun1(){......}//此方法将不允许被重写}
const
クラス 内部メソッドが const および static として宣言されたプロパティにアクセスする場合、self::$name の形式を使用して を呼び出す必要があります。例は次のとおりです。<?phpclass clss_a{ private static $name="static class_a"; const PI=3.14; public $value; public static function getName(){ return self::$name; } //这种写法有误,静态方法不能访问非静态属性 public static function getName2(){ return self::$value; } public function getPI(){ return self::PI; }}const 属性の宣言形式は const $PI=3.14 ではなく、const PI=3.14 であることに注意してください。
self
PHP中 :: 、-> 、self 、$this操作符的区别
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。
PHP双冒号::的用法
双冒号操作符即作用域限定操作符Scope Resolution Operator可以访问静态、const和类中重写的属性与方法。
在类定义外使用的话,使用类名调用。在PHP 5.3.0,可以使用变量代替类名。Program List:用变量在类定义外部访问。
<?phpclass Fruit { const CONST_VALUE = 'Fruit Color';}$classname = 'Fruit';echo $classname::CONST_VALUE; // As of PHP 5.3.0echo Fruit::CONST_VALUE;?>Program List:在类定义外部使用::
<?phpclass Fruit { const CONST_VALUE = 'Fruit Color';}class Apple extends Fruit{ public static $color = 'Red'; public static function doubleColon() { echo parent::CONST_VALUE . "\n"; echo self::$color . "\n"; }}程序运行结果:Fruit Color Red
Program List:调用parent方法
<?phpclass Fruit{ protected function showColor() { echo "Fruit::showColor()\n"; }}class Apple extends Fruit{ // Override parent's definition public function showColor() { // But still call the parent function parent::showColor(); echo "Apple::showColor()\n"; }}$apple = new Apple();$apple->showColor();?>程序运行结果:
Fruit::showColor()
Apple::showColor()
Program List:使用作用域限定符
<?php class Apple { public function showColor() { return $this->color; } } class Banana { public $color; public function __construct() { $this->color = "Banana is yellow"; } public function GetColor() { return Apple::showColor(); } } $banana = new Banana; echo $banana->GetColor();?>程序运行结果:Banana is yellow
Program List:调用基类的方法
<?phpclass Fruit{ static function color() { return "color"; } static function showColor() { echo "show " . self::color(); }}class Apple extends Fruit{ static function color() { return "red"; }}Apple::showColor();// output is "show color"!?>程序运行结果:show color

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
