ホームページ バックエンド開発 PHPチュートリアル PHP 変数とクラスやオブジェクトなどの型拡張子

PHP 変数とクラスやオブジェクトなどの型拡張子

Nov 21, 2016 pm 05:01 PM

1. 概要とインストール

これらの関数を使用すると、クラスとオブジェクトのインスタンスに関する情報を取得できます。 オブジェクトが属するクラス名と、そのメンバーのプロパティおよびメソッドを取得できます。 これらの関数を使用すると、オブジェクトとクラスの関係だけでなく、それらの継承関係 (オブジェクト クラスがどのクラスから継承しているかなど) も知ることができます。

PHP でのオブジェクトとクラスの実装方法と使用方法の詳細な説明については、オブジェクト指向の章を参照してください。

これらの関数を使用するためにインストールは必要ありません。これらは PHP コアの一部です。

2. クラス関数とオブジェクト関数の完全なコレクション

__autoload — 未定義のクラスのロードを試みます

call_user_method_array — パラメーター配列を渡しながらユーザー メソッドを呼び出します (非推奨)

call_user_method — 特定のオブジェクトのユーザー メソッドを呼び出します (非推奨) )

class_alias — クラスのエイリアスを作成します

class_exists — クラスが定義されているかどうかを確認します

get_called_class — 後期静的バインディング (「後期静的バインディング」) のクラスの名前

get_class_methods — 以下から構成される配列を返しますクラスのメソッド名

get_class_vars — クラスのデフォルト属性から構成される配列を返します

get_class — オブジェクトのクラス名を返します

get_declared_classes — 定義されたクラスの名前から構成される配列を返します

get_declared_interfaces — 宣言されたすべてのインターフェイスを含む配列を返します

get_declared_traits — 定義されているすべての特性の配列を返します

get_object_vars — オブジェクト属性で構成される連想配列を返します

get_parent_class — オブジェクトまたはクラスの親クラス名を返します

interface_exists — チェックインターフェイスが定義されているかどうか

is_a — オブジェクトがこのクラスに属しているか、クラスがこのオブジェクトの親クラスである場合に TRUE を返す

is_subclass_of — このオブジェクトがこのクラスのサブクラスである場合に TRUE を返す

method_exists —クラスのメソッドが存在するかどうかを確認します

property_exists — オブジェクトまたはクラスにこの属性があるかどうかを確認します

trait_exists - 指定された特性が存在するかどうかを確認します

3. 使用例

この例では、最初に基本クラスを定義しますそしてクラスの延長。 この基本クラスは、食用かどうかとその色に関して、一般的な野菜を記述します。 サブクラス Spinach は、調理するためのメソッドと、調理されたかどうかを確認するための別のメソッドを追加します。

例 #1classes.inc

<?php
    // base class with member properties and methods
    class Vegetable {
        var $edible;
        var $color;
        function Vegetable($edible, $color="green") 
        {
            $this->edible = $edible;
            $this->color = $color;
        }
        function is_edible() 
        {
            return $this->edible;
        }
        function what_color() 
        {
             return $this->color;
        }
   } // end of class Vegetable
   // extends the base class
   class Spinach extends Vegetable {
       var $cooked = false;
       function Spinach() 
       {
           $this->Vegetable(true, "green");
       }
       function cook_it() 
       {
           $this->cooked = true;
       }
       function is_cooked() 
       {
           return $this->cooked;
       }
   } // end of class Spinach
?>
ログイン後にコピー

次に、これらのクラスから 2 つのオブジェクトをインスタンス化し、それらのクラスの継承関係を含むそれらの情報を出力します。 同時に、主にこれらの変数を美しく出力するために、いくつかのユーティリティ関数も定義しました。

例 #2 test_script.php

<?php
    include "classes.inc";
    // 实用函数
    function print_vars($obj)
    {
        foreach (get_object_vars($obj) as $prop => $val) {
            echo "\t$prop = $val\n";
        }
    }
    function print_methods($obj)
    {
        $arr = get_class_methods(get_class($obj));
        foreach ($arr as $method) {
            echo "\tfunction $method()\n";
        }
    }
    function class_parentage($obj, $class)
    {
        if (is_subclass_of($GLOBALS[$obj], $class)) {
            echo "Object $obj belongs to class " . get_class($$obj);
            echo " a subclass of $class\n";
        } else {
            echo "Object $obj does not belong to a subclass of $class\n";
        }
    }
    // 实例化 2 对象
    $veggie = new Vegetable(true, "blue");
    $leafy = new Spinach();
    // 打印这些对象的信息
    echo "veggie: CLASS " . get_class($veggie) . "\n";
    echo "leafy: CLASS " . get_class($leafy);
    echo ", PARENT " . get_parent_class($leafy) . "\n";
    // 显示蔬菜的属性
    echo "\nveggie: Properties\n";
    print_vars($veggie);
    // and leafy methods
    echo "\nleafy: Methods\n";
    print_methods($leafy);
    echo "\nParentage:\n";
    class_parentage("leafy", "Spinach");
    class_parentage("leafy", "Vegetable");
?>
ログイン後にコピー

注意すべき重要な点は、上記の例では、オブジェクト $leafy が Spinach ( Vegetable のサブクラス) のインスタンスであり、スクリプトの最後の部分が次を出力することです。情報:

rreee


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles