第2章(オブジェクト指向oop)「phpとmysqlのWeb開発」「phpとmysqlのプログラミング」を合わせて読む

WBOY
リリース: 2016-06-23 13:16:57
オリジナル
1027 人が閲覧しました

目次

  • クラス
  • オブジェクト
  • プロパティ
  • 宣言されたプロパティ
  • 呼び出しプロパティ
  • プロパティのスコープ
  • プロパティのオーバーロード
  • メソッド
  • 抽象スコープ
  • 定数
  • 関数とデストラクターを構築する
  • コンストラクター
  • 親クラスのコンストラクターを呼び出す
  • 無関係なコンストラクターを呼び出す
  • Destructor
  • 静的クラスメンバー

クラス

クラスは、アプリケーションの 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");    }}?>
ログイン後にコピー

Object

クラスは、オブジェクトと呼ばれるエンティティの特定のインスタンスを作成するための基礎を提供します。たとえば、従業員クラスは、従業員 a と b を作成できます。属性スコープ、public、private、protected、final、static

* public はデフォルトであり、public スコープで属性を宣言します。対応するオブジェクトに直接アクセスして操作できますが、public 属性は使用できません。他の人によるアクセスや変更を避けるために、oop で推奨されます。

* private は属性が定義されているクラス内でのみアクセスでき、そのサブクラスでは使用できません。oop の主な原則であるカプセル化のため、プライベート属性はパブリック インターフェイスまたはメソッドを通じてアクセスする必要があります

< ?php$employee = new Employee();?>
ログイン後にコピー

属性の操作をメソッド内にカプセル化することで、開発者はプロパティの設定方法を厳密に制御できるようになります。

protected は、属性が定義されているクラスでのみアクセスでき、そのサブクラスで使用できます。

final は、主に継承時の属性のオーバーライドに関連して、サブクラスがこの属性をオーバーライドするのを防ぐことができます。

static とは、静的、静的ドメイン、静的変数、静的属性を意味します。

属性のオーバーロード

属性のオーバーロードは、__set メソッドと __get メソッドをオーバーロードすることで、属性にアクセスして変更するときに変更を自動的にトリガーします。

__set
    < ?phpclass Employee{    private $name;  //声明属性的有private,public,protected    private $title;    protected $wage;}?>
    ログイン後にコピー
  • __get
  • __set
  • と同様
  • __set__get 間の関係により、単純な属性しか扱えず、複雑な oop アプリケーションには不十分であるため、独自のメソッドを実装してそれぞれについて考慮する必要がありますプライベート プロパティごとに 2 つのメソッドを作成します。
  • < ?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

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

コンストラクターとデストラクター

コンストラクター

コンストラクターは、インスタンスが初期化されるときに自動的に実行される関数であり、パラメーターを受け取り、クラスとメソッドを呼び出し、他のコンストラクターを呼び出すことができます。

そうですか

新しいオブジェクトがインスタンス化されるたびに呼び出されるメソッドは、コンストラクターを介して実行するのが最適です。さらに、これらのメソッドがコンストラクター内でのみ呼び出せるようにするには、private を設定する必要があります

親クラスのコンストラクターを呼び出します。

必須 親を使用して明示的に呼び出す

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

Destructor

破壊は構築の逆で、メモリ内のオブジェクトのデータを元に戻す

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

この記事は PeterYuan によって作成され、表示 - 非営利 2.5 中国本土に基づいてライセンスされています。 転載または引用する前に、著者に連絡し、著者名に署名し、記事の出典を示す必要があります。神のような少年 » 第2章(オブジェクト指向おっとり) 「phpとmysqlのWeb開発」 「phpとmysqlのプログラミング」 あわせて読みたい

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