ホームページ > バックエンド開発 > PHPチュートリアル > PHPオブジェクト指向の簡単なまとめ

PHPオブジェクト指向の簡単なまとめ

WJ
リリース: 2023-04-08 17:50:02
転載
2470 人が閲覧しました

基礎知識

クラス: 同じ属性またはメソッドを持つクラスのコレクション。たとえば、シボレー車はシボレー車カテゴリ、メルセデスベンツ車はメルセデスベンツ車カテゴリ、BMW車はBMW車カテゴリであり、これら 3 つのカテゴリはメインの車カテゴリのサブカテゴリです。
オブジェクト: クラスの特定の実装。たとえば、BMW Q5 は、BMW 車クラスの特定の実装です。オブジェクトはメモリに保存されます。メモリ内のオブジェクトの割り当てを見てみましょう

PHPオブジェクト指向の簡単なまとめ

#オブジェクト指向を使用すると、上記 2 つの知識ポイントを柔軟に使用できます。クラスとオブジェクトを作成して使用しましょう

<?php
    /**
    *新建一个类
    */
    class newClass{        public $a;        public $b;        public function funA(){            echo "I am function A";
        }        public function funB(){            echo "I am function B";
        }
    }    /**
    *使用类创建对象
    */
    $opt=new newClass();
    $opt->a="opt";//将opt对象中的a属性赋值为opt
    $opt->funA();//打印出"I am function A"?>
ログイン後にコピー

修飾子: クラスでクラスと属性を定義するとき、次の 3 つの修飾子を使用できます。追加しない場合、デフォルトは public
public です。最大権限
protected: 権限の範囲はそれ自体とそのサブクラス内にあります
private: 権限の範囲はそれ自体内にのみあります
コンストラクタとデストラクタ: クラスをインスタンス化してオブジェクトを作成するとき、多くの場合、オブジェクトを初期化する必要があります。このとき、クラス内にコンストラクタ メソッドを定義する必要があります。オブジェクトの使用が完了したら、メモリ使用量を減らすためにオブジェクトを解放する必要がありますが、このとき、デストラクター メソッドを使用する必要があります。
php では、__construct() メソッドと __destruct() を使用します。次のコードは、

<?php
class newClass{
    public $a;
    public $b;
    public function __construct($a,$b){
        $this->a=$a;
        $this->b=$b;
        echo "我是构造函数";
    }
    public function __destruct(){
        echo "我是析构函数";
    }
}
?>
ログイン後にコピー

Encapsulation

開発時に使用します。重要なプログラム モジュールのデータには、他の人が簡単にアクセスできないようにすることが多いため、これらのデータはカプセル化する必要があります。現時点では、private キーワード。

次のように:

<?php
class privateClass
{
    private $a;
    private $b;
    private function privateFun()
    {
        echo "我是封装的方法";
    }
} ?>
ログイン後にコピー

このように、オブジェクトを作成するときに、プライベート プロパティやメソッドを呼び出すことはできません。ただし、マジック メソッドを使用すると、これらのプライベート プロパティとメソッドにアクセスできます。

__set() と __get() の使用
__set() メソッドを通じて、オブジェクトを通じてメンバー属性値を直接設定できます。
__get() メソッドを通じて、オブジェクトを通じてメンバー属性値を取得

<?php
class setClass
{        
     private $a;        
    private $b="ww";        
    public function __set($oldValue,$newvalue){ 
        $this->$oldValue=$newvalue;
    }        
    public function __get($newvalue){            
        return $newvalue;
    }
}
    $opt= new setClass();
    $opt->a="sss";//直接设置私有属性值
    echo $opt->b;//直接读取私有属性值
?>
ログイン後にコピー

__isset() および __unset() の使用

__isset() を通じてオブジェクト内のプライベート属性が存在するかどうかを直接確認する
プライベート属性を直接削除する__unset() を介してオブジェクト内の属性を取得します。

<?php
class issetClass
{
    private $a;
    private $b = &#39;www&#39;;
    function __isset($privateName)
    {
        if (isset($privateName)) {
            return 1;
        } else {
            return 0;
        }
    }
    function __unset($privateName)
    {
        echo "销毁" . $privateName;
    }
}
$opt = new issetClass();
echo isset($opt->$b);
var_dump(unset($opt->$b));?>
ログイン後にコピー

継承

複数のクラスを作成する場合、多くの場合、複数のクラスが同じプロパティとメソッドを持ちます。コードを簡素化するために、継承を導入します。サブクラスの概念により、親クラスの一部の属性とメソッドを継承できるため、冗長なコード記述が削減されます。

継承クラスの書き方

キーワード extends を使用してサブクラスを作成します

<?php
    class parentClass{
    }    
    class childClass extends parentClass{
    }    
?>
ログイン後にコピー

上記のように、childClass はparentClass のサブクラスです。PHP は単一継承のみをサポートします。サブクラスは 1 つだけですが、親クラスは複数のサブクラスを持つことができます。

親クラスのメソッドをオーバーライドする親クラスのメソッドがサブクラスの使用を満足できない場合、親クラスのメソッドをオーバーライドできます。ただし、親クラスのメソッドをサブクラスで使用したい場合は、親:: メソッド名という構文を使用できます。いくつかの重要なキーワード

3.1 Final

final は、 class メソッドでは、メンバー属性を変更できません。

final で変更されたクラスは継承できません。また、final で変更されたメソッドはサブクラスでオーバーライドできません。

3.2 static

静的はできます。メンバーのプロパティとメンバー メソッドは変更できますが、クラスは変更できません。

static で変更されたメンバーとメソッドは、次の構文を使用してクラスを通じて直接使用できます: クラス名::\$プロパティ名またはメソッド名();
クラスで使用する場合は、次の構文を使用します: self::\$ 属性名またはメソッド名

3.3 const

クラス内で定数を宣言するには、代わりに const を使用します。 define( );

たとえば、const TT=90 の場合、定数を使用する場合は、次の構文を直接使用します self::constant name

3.4instanceof

このキーワードを使用しますインスタンスがクラスのインスタンスであるかどうかを検出します。


3.5 trait

php は単一継承のみを実行できますが、コードを再利用して単一継承の問題を解決する代替方法も提供します。

次のように

<?php

trait testA
{
    function a()
    {
    }
}

trait testB
{
    function b()
    {
    }
}

class testC
{
    use testA, testB;

    function c()
    {
    }
} ?>
ログイン後にコピー

抽象技術

抽象キーワードで変更されたメソッドおよびクラスは、抽象メソッドまたは抽象クラスと呼ばれます。 。

抽象クラスと抽象メソッドの宣言

<?php
abstract class testClass
{
$a;
$b;
    abstract function testFun();
    abstract function testFun1();
    public function optFun()
    {
        echo "抽象类中的抽象方法";
    }//抽象类可以有非抽象方法
}
class childClass extends testClass
{
    function testFun()
    {
        echo "子类中实现抽象方法";
    }
    function testFun1()
    {
        echo "子类实现抽象方法";
    }
}
abstract child1Class extends testClass
{
}//子类是抽象方法可以不实现父类的抽象方法?>
ログイン後にコピー

抽象テクノロジは、クラスのインスタンス化を制限するサブクラスの宣言の仕様を提供します (抽象クラスはインスタンス化できません)。

インターフェース技術

インターフェースは特殊な抽象クラスです。インターフェース内で宣言できるのは抽象クラスと定数のみです。

インターフェースの宣言使用インターフェース、implements を使用してインターフェースを実装、修飾子はデフォルトの public のみにできます。
サブクラスは複数のインターフェースを継承し、同時に親クラスを継承できます

<?php
interface newInterface
{
    const V = 12;
    abstract function fun1();
    abstract function fun2();
}
interface newInterface1
{
    abstract function fun3();
    abstract function fun4();
}
class parentClass
{
    function fun5()
    {
        echo "fun5";
    }
}
class optClass extends parentClass implements newInterface, newINterface1
{
    function fun1()
    {
        echo "fun1";
    }
    function fun2()
    {
        echo "fun2";
    }
    function fun3()
    {
        echo "fun3";
    }
    function fun4()
    {
        echo "fun4";
    }
} ?>
ログイン後にコピー

ポリモーフィズム

PHP でのポリモーフィック実装では、クラスが複数のサブクラスを介して継承される必要があります。クラス メソッドが複数のサブクラスで書き換えられ、異なる関数が実装される場合、それをポリモーフィズムと呼びます。

推奨チュートリアル: 「PHP チュートリアル #」



以上がPHPオブジェクト指向の簡単なまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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