ホームページ バックエンド開発 PHPチュートリアル PHP のオブジェクト指向プログラミングについての簡単な説明

PHP のオブジェクト指向プログラミングについての簡単な説明

Apr 09, 2018 pm 03:31 PM
php 物体 プログラミング

この記事で共有する内容は、PHP オブジェクト指向プログラミングについての簡単な説明です。必要な方は参考にしてください。

1. 2. PHP 高度なオブジェクト指向プログラミングの実践

知識ポイント: クラスの継承、メソッドのオーバーライド、アクセス制御、静的キーワード、final キーワード、データ アクセス、インターフェイス、ポリモーフィズム、抽象クラス

2.1、クラスの継承: キーの拡張言葉

例えば、オペレーター、ホスト、人間と同じ行動方法を持っていますが、それぞれが異なる専門性を持っています。したがって、プログラミング時にそれらの親クラスを作成し、継承する必要があります。

<?php
/*
*    通过对象的编程方式,可将实现生活中的一切事物以对象的形式表现出来。便于理解、维护、扩展等;
*    本示例:定义一个“人”类
*    $name : 对象中的成员属性,在此类中表示人的姓名
*    say() : 对象中的成员方法,在此类中表示人说话的方法
*    $this : PHP中的伪变量,表示自身的类
*    __construct() : php中的魔术方法,构造函数,在实例化类时自动执行
*    __destruct() : php中的魔术方法,析构函数,当类调用完成后自动执行
*/
class Human
{
    public $name;
    public $sex;
    public $age;
    public function __construct($name,$sex,$age) 
    {
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }
    public function say()
    {
        echo &#39;大家好,我的名字叫&#39;.$this->name.&#39;,今年&#39;.$this->age.&#39;岁,我的性别是&#39;.$this->sex;
    }
    public function __destruct()
    {
        $this->name = null;
        $this->sex = null;
        $this->age = null;
    }
}
//实例化“人”类
$male = new Human("张三","男","20");
//调用“人”类说话的方法
$male->say();

//输出结果:大家好,我的名字叫张三,今年20岁,我的性别是男
?>
ログイン後にコピー

2.2. メソッドの書き換え: サブクラスは親クラスのメソッドを書き換えます

<?php
/*
*    创建一个“人”类做为父类,继承的子类都拥有其父类的成员属性、方法
*/
class Human
{
    public $name;
    public function say()
    {
        echo "父类说话的方法,姓名:".$this->name."\n";
    }
    public function eat()
    {
        echo "父类吃饭的方法\n";
    }
}
/*
*    创建一个“运动员”类,继承“人”类
*    extends : 关键字,继承某个类
*/
class Sport extends Human
{
    public $type;    
    public function __construct($name,$type)
    {
        $this->name = $name;    //给父类 $name 属性赋值
        $this->type = $type;    
    }
    public function run()
    {
        $this->say();   //调用父类“说话”的方法
        echo "我在正跑步,我是一员".$this->type."运动员.....\n";
    }
}
/*
*    创建一个“主持人”类,继承“人”类
*    extends : 关键字,继承某个类
*/
class Host extends Human
{
    public $television; 
    public function __construct($name,$television)
    {
        $this->name = $name;    
        $this->television= $television;   
    }
    public function perform()
    {
        $this->eat();   //调用父类“吃饭”的方法
        echo "我在正表演一个节目,我是".$this->television."电视台的一名主持人.....\n";
    }
}

//实例化“运动员”类
$nba = new Sport("乔丹","篮球");
$nba->run();

//实例化“主持人”类
$tv = new Host("张三","北京卫视");
$tv->perform();

//输出结果:
//父类说话的方法,姓名:乔丹 我在正跑步,我是一员篮球运动员..... 
//父类吃饭的方法 我在正表演一个节目,我是北京卫视电视台的一名主持人.....
?>
ログイン後にコピー

2.3. アクセス制御: public、protected、private キーワード

:定義 パブリックなメンバー属性またはメソッドをどこでも使用できます

protected: 保護されたメンバー属性またはメソッドを定義します。クラス自体またはサブクラスによってのみ使用が許可されます

private: プライベートなメンバー属性またはメソッドを定義します。クラス自体によってのみ使用が許可されます

<?php
class Human
{
    public function say()
    {
        echo "父类说话的方法";
    }
}
class Sport extends Human
{
    //重写父类“说话”的方法
    public function say()
    {
        echo "子类说话的方法";
    }
}
$nba = new Sport();
$nba->say();
//输出结果:子类说话的方法
?>
ログイン後にコピー

2.4、static (static) キーワード
1)、静的属性はクラスのパブリック データを保存するために使用されます。

2)、静的メソッドでは静的属性またはメソッドのみにアクセスでき、$this 疑似変数にはアクセスできません使用可能です。

3)、新しいキーワードを使用してオブジェクトをインスタンス化せずに、静的メンバーにアクセスして使用できます。

<?php
class Human
{
    public $name;
    protected $sex;
    private $age;
    
}
//实例化对象,给公共属性赋值可正常输出结果,外部不能给protected、private受保护的成员属性赋值或使用
$worker = new Human();
$worker->name = "张三";
echo $worker->name;

?>
ログイン後にコピー

2.5. 最後のキーワード: メンバー メソッドはオーバーライドまたは継承できません
例: 1. 親クラスの場合「Eat」メソッドは、サブクラスにオーバーライドされたくない。 2. クラス「Athletes」の場合、サブクラスを作成したくない。

<?php
class Human
{
    static $name = "张三";
    static function say()
    {
        echo "我的姓名叫:".self::$name;
    }
}
//外部使用静态成员属性或方法
echo Human::$name;
Human::say();

//输出结果:张三  我的姓名叫:张三
?>
ログイン後にコピー

2.6. データ アクセス: $this、self、parent キーワード
。 $this: 疑似変数。クラス自体を表し、このクラスとその親クラスのメンバー プロパティとメソッドにアクセスできます。

self: クラス内の静的なメンバー属性またはメソッドにアクセスします。

parent: 親クラスのメンバー属性またはメソッドにアクセスします。

<?php
class Human
{
    final public function eat()
    {
        echo "父类吃饭的方法,不允许子类重写";
    }
}
final class Sport extends Human
{
    public function eat()
    {
        echo "子类吃饭的方法。此时程序将会报致命错误";
    }
}
//创建一个类继承 Sport 这个类。此时程序也将会报致命错误。因为 Sport 类不允许再创建子类
class Student extends Sport
{
    public $name;
}

//实例化 Sport 类 ,调用 eat() 方法
$nba = new Sport();
$nba->eat();

//实例化 Student 类 ,给 name 属性负值
$obj = new Student();
$obj->name = "张三";

//输出结果:Fatal error: Cannot override final method Human::eat() in ******.php on line 15
//Fatal error: Class Student may not inherit from final class (Sport) in ****.php on line 20
?>
ログイン後にコピー

2.7. インターフェイス: 異なるクラスの共通の動作メソッドを定義しますが、それらを具体的に実装するわけではなく、サブクラスによって実装される 特定のメソッド;
例: 人間は食べることができ、動物も食べることができ、一部の植物も食べることができますが、食べる方法は異なるため、現時点ではインターフェイスクラスと特定のメソッドを定義する必要がありますはサブクラスによって実装されます。

インターフェイス キーワードを定義します:interface

インターフェイス メソッド キーワードを実装します:implements

<?php
class Human
{
    static $name = "张三";
}
class Sport extends Human
{
    static function getParentName()
    {
        echo parent::$name;
    }
    public function get() 
    {
       self::getParentName(); 
    }
}
$obj = new Sport();
$obj->get();
//输出结果:张三
?>
ログイン後にコピー

2.8. ポリモーフィズム: たとえば、インターフェイス A には 2 つの実装 B と C があります。B と C は、インターフェイス この現象はポリモーフィズムと呼ばれます。上の例では、ICanEat インターフェイスは Eat() メソッドを定義しています。これらはすべて「食べる」メソッドを実装していますが、食べるときの動作は異なります。これはポリモーフィズムと呼ばれます。 2.9. 抽象クラス: インターフェイスとクラスの定義の間に介入し、クラス内の一部のメソッドを実装できないようにします。 . 同じ機能を持ち、変更されないメソッドの一部を実装します。ただし、インターフェイス クラスでは実装されたメソッドは許可されません。
例: 人間も動物も食事と呼吸のメソッドを持っていますが、食事以外の呼吸メソッドは同じです。この場合、それを実装するには抽象クラスを定義する必要があります。

抽象クラスのキーワードを定義する: abstract

<?php
//定义一个接口类,有吃饭的方法,但不具体实现。
interface ICanEat
{
    public function eat($food);
}
class Human implements ICanEat
{
    //eat()方法必须由子类来实现,否则程序将报致命错误
    public function eat($food) 
    {
        echo "I&#39;m eating ".$food;
    }
}
class Animal implements ICanEat
{
    public function eat($food)
    {
        echo "It&#39;s eating ".$food;
    }
}
//实例化一个“人”类
$people = new Human();
$people->eat(&#39;rice&#39;);

//实例化一个“动物”类
$monkey = new Animal();
$monkey->eat(&#39;banana&#39;);

//输出结果:I&#39;m eating rice
// It&#39;s eating banana

?>
ログイン後にコピー

3. PHP オブジェクト指向プログラミングの特別な実践


PHP 言語に固有のいくつかのマジック メソッド:

<?php
//定义一个抽象类,里面有吃饭和呼吸的方法。呼吸方法需要在抽象类中具体实现
abstract class ICanEat
{
    abstract function eat($food);
    public function breath()
    {
        echo &#39;Breath use the air...&#39;;
    }
}
class Human extends ICanEat
{
    public function eat($food)
    {
        echo "I&#39;m eating ".$food;
        $this->breath();
    }
}
//实例化“人”类
$people = new Human();
$people->eat(&#39;rice&#39;);
//输出结果:I&#39;m eating rice Breath use the air...
?>
ログイン後にコピー
関連する推奨事項:

PHP オブジェクト指向のメモ - 123 図解静的属性と静的メソッド

オブジェクト指向PHPの3大特徴を学びましょう

PHPオブジェクト指向ゲストブック関数の詳細な実装例

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHP:データベースとサーバー側のロジックの処理 PHP:データベースとサーバー側のロジックの処理 Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

See all articles