目次
ディレクトリ
1. クラスとオブジェクト:実際の存在 この種のあらゆる物理的オブジェクトの個体。 $a =new User(); インスタンス化された $a
自動的にロードする 特別な autoload 関数を定義すると、スクリプト内で定義されていないクラスが参照されたときに、この関数が自動的に呼び出されます。
構築メソッド
public で定義されたクラス メンバーはどこからでもアクセスできます。 protected で定義されたクラス メンバーは、そのメンバーが存在するクラスのサブクラスおよび親クラスからアクセスできます。配置されたクラスにもアクセスできます); " >属性またはメソッドのアクセス制御は、キーワード public、protected、またはprivate infront public で定義されたクラス メンバーはどこからでもアクセスできます。 protected で定義されたクラス メンバーは、そのメンバーが存在するクラスのサブクラスおよび親クラスからアクセスできます。配置されたクラスにもアクセスできます);
5 .对象继承
6 .范围解析操作符(::)
ホームページ バックエンド開発 PHPチュートリアル PHP のクラスとオブジェクトについての包括的な理解

PHP のクラスとオブジェクトについての包括的な理解

Jun 28, 2017 pm 01:50 PM
php

ディレクトリ

PHPクラスとオブジェクト完全な分析 (1)

PHP クラスとオブジェクトの完全な分析 (2)

PHP クラスとオブジェクトの完全な分析 (3)

1. クラスとオブジェクト:実際の存在 この種のあらゆる物理的オブジェクトの個体。 $a =new User(); インスタンス化された $a

参照: PHP エイリアス、2 つの異なる変数名が同じコンテンツを指します


カプセル化: オブジェクトの

プロパティとメソッド

をクラス (論理ユニット) に編成します ) 継承:コードの再利用を目的として、元のクラスに基づいて新しいクラスを作成します。 多態性: サブクラス型のポインターを親クラス型のポインターに割り当てることができます。
------------------------------------------------

2. オブジェクトを自動的にロードする:

自動的にロードする 特別な autoload 関数を定義すると、スクリプト内で定義されていないクラスが参照されたときに、この関数が自動的に呼び出されます。

[php] view plaincopyprint?
 function autoload($class){
   require_once("classes/$class.class.php");
 }
ログイン後にコピー

なぜ autoload を使用する必要があるのか​​

1. 1 つ目は、このクラス ファイルがどこに保存されているかがわからないということです

2. このファイルをいつ使用する必要があるかがわからないということです。

3. 特にプロジェクト ファイルの数が多い場合、各ファイルの先頭に要件の長いリストを記述することは不可能です...

1 つを置き換えました

require_once ("classes/Books.class.php") ;

require_once ("classes/Employees.class.php") ;
require_once ("classes/Patrons.class.php") ;

zend が最も推奨したもの一般的な方法では、ファイル名にパスを含めます。たとえば、次の例:

[php] view plaincopyprint?

    view sourceprint?  
    // Main.class    
      
    function autoload($class_name) {     
         $path = str_replace('_', DIRECTORY_SEPARATOR, $class_name);     
         require_once $path.'.php';     
     }
ログイン後にコピー

temp = new Main_Super_Class();

上記の例では、パス内のすべてのアンダースコアが区切り文字に置き換えられます。Main/Super/Class.php ファイルに到達します。

短所:

コーディングプロセスでは、コードファイルをどこに置くべきかを明確に知っておく必要があります。

また、ファイルパスはクラス名にハードコーディングされているため、フォルダー構造を変更する必要がある場合は、次のようにする必要があります。すべてのクラス名を手動で変更します。

開発環境にいて、速度をあまり気にしない場合は、「すべて含める」メソッドを使用すると非常に便利です。

すべてのクラス ファイルを 1 つまたは複数の特定のフォルダーに配置し、トラバーサルを通じてそれらを検索してロードします。

例:

   <?php     
      
    $arr = array (     
         &#39;Project/Classes&#39;,     
        &#39;Project/Classes/Children&#39;,     
        &#39;Project/Interfaces&#39;    
     );    
      
     foreach($arr as $dir) {     
      
        $dir_list = opendir($dir);    
      
        while ($file = readdir($dir_list)) {     
             $path = $dir.DIRECTORY_SEPARATOR.$file;     
             if(in_array($file, array(&#39;.&#39;, &#39;..&#39;)) || is_dir($path))     
                 continue;    
             if (strpos($file, ".class.php"))     
                 require_once $path;     
         }     
    }     
      
     ?>
ログイン後にコピー

別の方法は、クラスファイルとその場所
設定ファイル

の間の関連付けを確立することです。例:

    view sourceprint?  
    // configuration.php           
    array_of_associations = array(     
        &#39;MainSuperClass&#39; = &#39;C:/Main/Super/Class.php&#39;,     
        &#39;MainPoorClass&#39; = &#39;C:/blablabla/gy.php&#39;    
     );
ログイン後にコピー
呼び出されるファイル
    <?php     
        require &#39;autoload_generated.php&#39;;    
        function autoload($className) {     
           global $autoload_list;     
           require_once $autoload_list[$className];     
        }    
          $x = new A();     
    ?>
ログイン後にコピー

---------- --------------------------------------

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

PHP

構築メソッド

construct() を使用すると、クラスをインスタンス化する前にコンストラクター メソッドを実行できます。

コンストラクターはクラス内の特別なメソッドです。 new 演算子を使用してクラスのインスタンスが作成されると、コンストラクター メソッドが自動的に呼び出され、その名前はconstruct() でなければなりません。

(クラス内で宣言できるコンストラクターは 1 つだけですが、そのコンストラクターは

オブジェクトを作成する

ごとに 1 回だけ呼び出されます。このメソッドはアクティブに呼び出すことができないため、

そのため、通常はいくつかの有用な初期化タスクを実行するために使用されます。これメソッドには戻り値がありません。)関数: オブジェクトの作成時にオブジェクトを初期化するために使用されます
コンストラクターparent::construct().

デストラクター: destruct ()定義: 特別な内部メンバー関数には戻り値の型もパラメーターもありません。任意に呼び出すことはできず、オーバーロードもされません。クラス オブジェクトの寿命が終了した場合にのみ、システムが自動的に呼び出して、コンストラクターに割り当てられたリソースを解放します。

コンストラクター メソッドに対応するのは、デストラクター メソッドです。デストラクター メソッドを使用すると、ファイルを閉じる、結果セットを解放するなど、クラスを破棄する前にいくつかの操作を実行したり、いくつかの関数を完了したりできます。

デストラクターはパラメーターを取ることができず、その名前は destruct() でなければなりません。
機能: 後処理をクリーンアップします。たとえば、オブジェクトの作成時に new を使用してメモリ空間を開き、終了する前にコンストラクターに割り当てられたリソースをデストラクターを使用して解放します。

例:

    class Person {  
        public $name;  
        public $age;  
      
        //定义一个构造方法初始化赋值  
        public function construct($name,$age) {  
            $this->name=$name;  
            $this->age=$age;  
        }  
        public function say() {  
            echo "my name is :".$this->name."<br />";  
            echo "my age is :".$this->age;  
        }  
        //析构函数  
        function destruct()  
        {  
            echo "goodbye :".$this->name;  
        }  
    }  
      
    $p1=new Person("ren", 25);  
    $p1->say();
ログイン後にコピー

------------------------------------------ ----- -------------------

4.

アクセス制御

属性またはメソッドのアクセス制御は、キーワード public、protected、またはprivate infront public で定義されたクラス メンバーはどこからでもアクセスできます。 protected で定義されたクラス メンバーは、そのメンバーが存在するクラスのサブクラスおよび親クラスからアクセスできます。配置されたクラスにもアクセスできます);

プライベートとして定義されたクラス メンバーには、そのメンバーが配置されているクラスのみがアクセスできます。

クラスメンバーのアクセス制御
クラスメンバーは、キーワードpublic、protected、またはprivateを使用して定義する必要があります。

メソッドのアクセス制御
クラス内のメソッドは、キーワードpublic、protected、またはprivateを使用して定義する必要があります。これらのキーワードが設定されていない場合、メソッドはデフォルトの public に設定されます。

例:

class MyClass  
{  
    public $public = &#39;Public&#39;;  
    protected $protected = &#39;Protected&#39;;  
    private $private = &#39;Private&#39;;  
  
    function printHello()  
    {  
        echo $this->public;  
        echo $this->protected;  
        echo $this->private;  
    }  
}  
  
$obj = new MyClass();  
echo $obj->public; // 这行能被正常执行  
echo $obj->protected; // 这行会产生一个致命错误  
echo $obj->private; // 这行也会产生一个致命错误  
$obj->printHello(); // 输出 Public、Protected 和 Private
ログイン後にコピー

-------------------------------------------------------------

5 .对象继承

继承定义:以原有的类为基础,创建一个新类,从而代码复用的目的;
--------------------------------------
覆写是对象继承时用到的
重载是单对象中同方法名不同参数的方法
--------------------------------------

继承已为大家所熟知的一个程序设计特性,PHP 的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。

比如,当扩展一个类,子类就会继承父类的所有公有和保护方法。但是子类的方法会覆盖父类的方法。

继承对于功能的设计和抽象是非常有用的,而且对于类似的对象增加新功能就无须重新再写这些公用的功能。

    class Person {  
        public $name;  
        public $age;  
      
        function say() {  
            echo "my name is:".$this->name."<br />";  
        echo "my age is:".$this->age;  
        }  
    }  
      
    // 类的继承  
    class Student extends Person {  
        var $school;    //学生所在学校的属性  
          
        function study() {  
            echo "my name is:".$this->name."<br />";  
            echo "my shool is:".$this->school;  
        }         
    }  
      
    $t1 = new Student();  
    $t1->name = "zhangsan";  
    $t1->school = "beijindaxue";  
    $t1->study();
ログイン後にコピー

------- --------- ------ --------- -------- -----

6 .范围解析操作符(::)

范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员、方法和常量,还可以用于覆盖类中的成员和方法。
当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。

self 和 parent 这两个特殊的关键字是用于在类的内部对成员或方法进行访问的。
注意:
当一个子类覆盖其父类中的方法时,PHP 不会再执行父类中已被覆盖的方法,直到子类中调用这些方法为止

例子:

    <?php  
    class OtherClass extends MyClass  
    {  
        public static $my_static = &#39;static var&#39;;  
      
        public static function doubleColon() {  
            echo parent::CONST_VALUE . "\n";  
            echo self::$my_static . "\n";  
        }  
    }  
      
    OtherClass::doubleColon();  
    ?>
ログイン後にコピー

以上が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でHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

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: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

See all articles