1.construct()
インスタンス化されたオブジェクトが自動的に呼び出されます。 Construct は、construct とそのクラス名と関数名の関数が同時に存在する場合に呼び出され、もう一方は呼び出されません。
クラス名と関数名が付いている関数は古いバージョンのコンストラクターです。
2.destruct()
は、オブジェクトを削除するとき、またはオブジェクトの操作が終了するときに呼び出されます。
3.call()
オブジェクトはメソッドを呼び出します。メソッドが存在しない場合は、このメソッドを呼び出します
4.get()
オブジェクトのプロパティを読み取り、オブジェクトのプロパティがプライベートの場合、値を代入するときに
5.set()
Ifを呼び出します。オブジェクトのプロパティ プロパティが private の場合に呼び出されます
6.toString()
オブジェクトを印刷するときに呼び出されます。
7.clone()
は、次のようにオブジェクトのクローンを作成するときに呼び出されます: $a=new test(); $a1=clone $a;
8.sleep()
の場合、Serializeが前に呼び出されます。オブジェクト比較 大きいので、シリアル化中にいくつかのものを削除したい場合に使用できます。
9.wakeup() は、オブジェクトの初期化作業を行うために、Unserialize 中に呼び出されます。 10.isset() オブジェクトの属性が存在するかどうかを検出します。検出された属性がプライベートである場合に呼び出されます。 11.unset()オブジェクト属性を削除する場合、削除されたオブジェクト属性がプライベートである場合に呼び出されます。12.set_state() var_export が呼び出されたときに呼び出されます。 set_state の戻り値を var_export の戻り値として使用します。 13.autoload()オブジェクトをインスタンス化する際、対応するクラスが存在しない場合、このメソッドは無視されます。以下のエディターでは、
PHP オブジェクト指向よく使用されるキーワードと魔法のメソッドについて詳しく説明します。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターをフォローして見てみましょう
オブジェクト指向 PHP 2 でよく使用されるキーワード。Final はクラスとメソッドのみを変更できます機能:
final で変更されたクラスはサブクラスに継承できません Final で変更されたメソッドはサブクラスによってオーバーライドできません
クラスの継承とメソッドの継承を制限するために使用されます。オーバーライドするには、final<?php //final修饰的类不能被继承 final class Person{ var $name; var $age; var $sex; function construct($name,$age,$sex){ $this->name=$name; $this->age=$age; $this->sex=$sex; } function fun1(){ echo $this->name; } } //Student类继承类用final修饰的Person类,所以会报错 class Student extends Person{ } $stu=new Student("zs",20,"nan"); $stu->fun1(); ?>static (static キーワード) を使用します
1。およびメンバーメソッドは変更できますが、クラスは変更できません
2. static で変更されたメンバープロパティは同じクラスで変更できますすべてのオブジェクトが共有されます
3. 静的データはメモリ内のデータセグメントに保存されます (静的セグメントの初期化)
4 . 静的データは、クラスが初めてロードされるときにメモリに割り当てられ、後で使用されます。クラスがロードされると、データセグメントから直接取得されます
5. ロードされたクラスとは何ですか?このクラスがプログラム内で使用されている限り(このクラス名が表示されます)6. 静的メソッド(静的に変更されたメソッド)は非静的メンバーにアクセスできません(静的メンバーは非静的メソッドでアクセスできます)非静的メンバーはオブジェクトを使用してアクセスする必要があります。内部メンバーにアクセスするには、静的メソッドをオブジェクトで呼び出す必要がないため、非静的メンバーも使用できるオブジェクトはありません。オブジェクト
メソッド内で非静的メンバーが使用されていないことが確実な場合は、このメソッドを静的メソッドとして宣言できます
注: 静的メンバーにはクラス名を使用してアクセスする必要があり、
オブジェクトを作成しないでください。オブジェクトアクセスは使用しない
クラス名::静的メンバー
クラスで静的メンバーを使用する場合、selfを使用してクラスを表すことができます
const
1。メンバー属性のみを変更できます。 2. クラス内で定数属性を宣言するには const を使用します
3. アクセス方法は静的メンバーのプロパティと同じです (クラス外では class name::constant を使用し、クラス内では self::constant を使用します)
4. 定数は必須です。宣言時に初期値が与えられる
<?php //定义一个类“人们” class Person{ protected $name; protected $age; protected $sex; static $country="中国"; //声明一个常量 const RUN="走"; //构造方法 function construct($name,$age,$sex){ $this->name=$name; $this->age=$age; $this->sex=$sex; } function getCountry(){ //如果在类中使用静态成员,可以使用self代表本类 return self::$country; } function say(){ echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>"; } protected function eat(){ echo "吃饭!<br>"; } function run(){ //在类的内部使用常量 self::常量 echo self::RUN."<br>"; } //声明静态的方法 static function hello(){ echo "你好<br>"; } }
PHP オブジェクト指向でよく使われるマジックメソッド
call()
機能:オブジェクトに存在しないメソッドを呼び出す場合、システムエラーが表示され、プログラムが終了します。
自動的に呼び出す場合: オブジェクトに存在しないメソッドを呼び出すときに自動的に呼び出されます存在しないエラー呼び出しを処理しますこのメソッドには 2 つのパラメータが必要です
<?php //定义一个类“人们” class Person{ protected $name; protected $age; protected $sex; static $country="中国"; //声明一个常量 const RUN="走"; //构造方法 function construct($name,$age,$sex){ $this->name=$name; $this->age=$age; $this->sex=$sex; } function getCountry(){ //如果在类中使用静态成员,可以使用self代表本类 return self::$country; } function say(){ echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>"; } protected function eat(){ echo "吃饭!<br>"; } function run(){ //在类的内部使用常量 self::常量 echo self::RUN."<br>"; } //处理一些不存在的错误调用 //就会在调用一个对象中不存在的方法时就会自动调用 function call($methodName,$args){ //$methodName调用不存在方法的方法名 $args里面的参数 echo "你调用的方法{$methodName}(参数:"; print_r($args); echo ")不存在<br>"; } //声明静态的方法 static function hello(){ echo "你好<br>"; } } $p=new Person("张三",20,"女"); $p->test(10,20,30); $p->demo("aa","bb"); $p->say(); ?>
toString()
オブジェクト参照を直接出力するときに自動的に呼び出され、文字列表現を素早く取得する最速の方法
<?php //定义一个类“人们” class Person{ protected $name; protected $age; protected $sex; static $country="中国"; //声明一个常量 const RUN="走"; //构造方法 function construct($name,$age,$sex){ $this->name=$name; $this->age=$age; $this->sex=$sex; } function say(){ echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>"; } function toString(){ return self::$country."<br>{$this->name}<br>{$this->age}<br>{$this->sex}<br>".self::RUN; } } $p=new Person("张三",21,"女"); echo $p; ?>
clone()
クローンオブジェクトはclone()を使用して処理されますOriginal(元のオブジェクト)Copy(コピーされたオブジェクト)
clone() は、オブジェクトのクローン作成時に自動的に呼び出されるメソッドです
オブジェクトが作成されるとすぐに、コンストラクターメソッド constuct に似た初期化アクションが必要です 在clone()方法中的$this关键字代表的是复本的对象,$that代表原本对象 autoload() 注意:其它的魔术方法都是在类中添加起作用,这是唯一一个不在类中添加的方法 只要在页面中使用到一个类,只要用到类名,就会自动将这个类名传给这个参数 test里的文件 one.class.php two.class.php three.class.php 对象串行化(序列化):将一个对象转为二进制串(对象是存储在内存中的,容易释放) 使用时间: 1.将对象长时间存储在数据库或文件中时 2.将对象在多个PHP文件中传输时 serialize(); 参数是一个对象,返回来的就是串行化后的二进制串 unserialize(); 参数就是对象的二进制串,返回来的就是新生成的对象 sleep() 是在序列化时调用的方法 作用:就是可以将一个对象部分串行化 只要这个方法中返回一个数组,数组中有几个成员属性就序列化几个成员属性,如果不加这个方法,则所有成员都被序列化 wakeup() 是在反序列化时调用的方法 也是对象重新诞生的过程 read.php write.php<?php
//定义一个类“人们”
class Person{
var $name;
protected $age;
protected $sex;
static $country="中国";
//声明一个常量
const RUN="走";
//构造方法
function construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
function say(){
echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>";
}
function clone(){
$this->name="王五";
$this->age=18;
$this->sex="男";
}
function destruct(){
echo $this->name."<br>";
}
}
$p=new Person("张三",21,"女");
$p->say();
//这并不能叫做克隆对象,因为在析构时只析构一次
/*$p1=$p;
$p1->name="李四";
$p1->say();*/
$p1= clone $p;
$p1->say();
?>
<?php
function autoload($className){
include "./test/".$className.".class.php";
}
$o=new One;
$o->fun1();
$t=new Two;
$t->fun2();
$h=new Three;
$h->fun3();
?>
<?php
class One{
function fun1(){
echo "The Class One<br>";
}
}
?>
<?php
class Two{
function fun2(){
echo "The Class Two<br>";
}
}
?>
<?php
class Three{
function fun3(){
echo "The Class Three<br>";
}
}
?>
<?php
//定义一个类“人们”
class Person{
var $name;
protected $age;
protected $sex;
static $country="中国";
//声明一个常量
const RUN="走";
//构造方法
function construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
function say(){
echo "我的名字:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>";
}
function clone(){
$this->name="王五";
$this->age=18;
$this->sex="男";
}
//是在序列化时调用的方法,可以部分串行化对象
function sleep(){
return array("name","age");
}
//是在反序列化时调用的方法,也是对象重新诞生的过程。可以改变里面的值
function wakeup(){
$this->name="sanzhang";
$this->age=$this->age+1;
}
function destruct(){
}
}
?>
<?php
require "11.php";
$str=file_get_contents("mess.txt");
$p=unserialize($str);
echo $p->say();
?>
<?php
require "11.php";
$p=new Person("张三",18,"男");
$str=serialize($p);
file_put_contents("mess.txt",$str);
?>
以上がPHPオブジェクト指向でよく使われるキーワードとマジックメソッドを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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 中国語版
中国語版、とても使いやすい

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
