目次
クラスは、アプリケーションの Thing で処理される実際のものを表します。たとえば、書籍を管理するアプリケーションを作成したい場合、書籍、従業員、顧客などを表すためにクラスが使用されます。各エンティティには、oop でそれぞれプロパティとメソッドと呼ばれる一連のプロパティと動作が含まれています
< ?phpclass Employee{ private $name; //属性 private $title; protected $wage; protected function clockIn() { //方法 echo "Member $this->$name clocked in at ".date("h:i:s"); } protected function clockOut() { echo "Member $this->$name clocked out at ".date("h:i:s"); }}?>
クラスは、オブジェクトと呼ばれるエンティティの特定のインスタンスを作成するための基礎を提供します。たとえば、従業員クラスは、従業員 a と b を作成できます。属性スコープ、public、private、protected、final、static
< ?php$employee = new Employee();?>
final は、主に継承時の属性のオーバーライドに関連して、サブクラスがこの属性をオーバーライドするのを防ぐことができます。
static とは、静的、静的ドメイン、静的変数、静的属性を意味します。
属性のオーバーロード
属性のオーバーロードは、__set メソッドと __get メソッドをオーバーロードすることで、属性にアクセスして変更するときに変更を自動的にトリガーします。__set
< ?phpclass Employee{ private $name; //声明属性的有private,public,protected private $title; protected $wage;}?>
< ?phpclass aa{ public $name = 'a'; function test() { $this->name = $name; //this表示引用当前类 }}?>
php は 6 つのメソッド スコープをサポートします: public、protected、private、abstract、final、static
public、protected、private、final、static は変数のスコープと非常によく似ています
abstract スコープ
抽象メソッド、でのみ宣言されます親クラスではあるが、子クラスに実装されているため、アプリケーション プログラミング インターフェイス API を定義し、それを将来の実装のモデルとして使用したい場合は、抽象メソッドを宣言できます
< ?phpclass aa{ private $name; public function setName($name) { //通过了公共方法来设置私有属性 $this->name = $name; }}$b = new aa;$b->setName("Mary");?>
constant
< ?phpclass Employee{ var $name; function __set($propName,$propValue){//__set方法有参数属性名和值,所以这里有2个变量 echo $propName."\n"; }}$employee = new Employee();$employee->name = "Mario"; //当触发修改属性的时候,就会触发__set方法,因为这里属性只有name而没有title,所以$employee->title = "hello";?>-----title //__set执行成功的话会返回true,失败就返回false,并且会执行函数内的代码,所以这里因为没有title属性,所以失败了,并且输出了失败的title属性。
コンストラクターとデストラクター
コンストラクター
コンストラクターは、インスタンスが初期化されるときに自動的に実行される関数であり、パラメーターを受け取り、クラスとメソッドを呼び出し、他のコンストラクターを呼び出すことができます。
そうですか親クラスのコンストラクターを呼び出します。
< ?php class Employee{ private $name; public function getName(){ return $this->name; } public function setName($name){ $this->name = $name; } }?>
無関係なコンストラクタを呼び出す
< ?phpabstract class Employee{ abstract function hire(); abstract function fire();}?>
< ?phpclass mathFunctions{ const PI = '3.1415926';}echo mathFuctions::PI; ?>
静的クラスメンバー
すべてを作成する必要がある場合クラス インスタンスがプロパティとメソッドを共有する場合、これらのプロパティとメソッドはすべてのクラス インスタンスに関連付けられますが、たとえば、Web ページの訪問者数を追跡するクラスを作成する場合、通常はクラスのたびに呼び出すことはできません。インスタンス化されるたびにカウントがクリアされるため、静的、静的クラスを設定する必要があります。
< ?php class Book{ private $title; private $isbn; private $copies; function __construct($isbn) { //这个就是构造函数 $this->setIsbn($isbn); //这里自动读取参数,设置书编码 $this->getTitle(); //自动获取书title $this->getNumberCopies(); //自动获取有多少本相同的书 } public function setIsbn($isbn) { $this->isbn = $isbn; //将参数赋值到类的属性isbn } public function getTitle() { $this->title = "hello,im a title!"; print ("Title: {$this->title}"."\n"); } public function getNumberCopies() { $this->copies = "5"; print ("Number copies available: {$this->copies}"."\n"); } } $book = new Book("061452424");?>----Title: hello,im a title! //直接实例就能够有输出,自动的。Number copies available: 5