PHPの関数ライブラリとオブジェクトの詳細な説明

藏色散人
リリース: 2023-04-08 12:32:01
転載
2509 人が閲覧しました

PHPの関数ライブラリとオブジェクトの詳細な説明

非推奨

一部の関数は非推奨または削除されたため、使用しないでください

__autoload - バージョン 7.2 で非推奨

#call_user_method_array - バージョン 7.0 で削除

#call_user_method - バージョン 7.0

#Judgment

# で削除# #クラスの存在チェック

関連関数

class_exists - クラスが存在するかどうかを判断します

interface_exists - インターフェースが存在するかどうかを判断します

trait_exists - 特性が存在するかどうかを決定します。

2 番目のパラメーターは、まだロードされていない場合に自動ロードを使用するかどうかを決定するために使用されます。

class_exists ( string $class_name [, bool $autoload = true ] ) : bool
interface_exists ( string $interface_name [, bool $autoload = true ] ) : bool
trait_exists ( string $traitname [, bool $autoload = true ] ) : bool
ログイン後にコピー

例 - 広範なクラスの存在チェック関数

function common_class_exists(string $class): bool
{
    return class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
}
ログイン後にコピー

クラス メンバーの存在チェック

関連関数:

property_exists - チェックプロパティが存在するかどうか

method_exists - メソッドが存在するかどうかを確認します

method_exists ( mixed $object , string $method_name ) : bool
property_exists ( mixed $class , string $property ) : bool
ログイン後にコピー

例 - コールバック関数を実装します。ユーザーはメソッドまたは属性を通じてコールバック URL を定義できます

trait RedirectsUsers
{
    public function redirectPath()
    {
        if (method_exists($this, 'redirectTo')) {
            return $this->redirectTo();
        }
        return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
    }
}
ログイン後にコピー

クラス関係判定

関連関数:

is_a — オブジェクトがこのクラスまたはこのクラスの親クラスに属し、TRUEを返す

is_subclass_of —オブジェクトはクラスの A サブクラスであり、TRUE

is_a ( object $object , string $class_name [, bool $allow_string = FALSE ] ) : bool
is_subclass_of ( object $object , string $class_name ) : bool
ログイン後にコピー

Example

interface A {}
interface B {}
class BaseFoo implements B {}
class Foo extends BaseFoo implements A{}
$foo = new Foo();
// 对象
is_a($foo, 'BaseFoo'); // true
is_a($foo, 'Foo'); // true
is_a($foo, 'A'); // true
// 类
is_a('Foo', 'BaseFoo'); // false
is_a('Foo', 'BaseFoo', true);  // true, 传入第三个参数,代表允许使用类名而不是示例
is_subclass_of($foo, 'Foo'); // false
is_subclass_of($foo, 'BaseFoo'); // true
is_subclass_of($foo, 'B'); // true
ログイン後にコピー

を返します。実際の状況では、演算子 instanceof

$foo instanceof Foo; // true
$foo instanceof A; // true
$foo instanceof B; // true
ログイン後にコピー

が操作によく使用されます。

関連関数:

class_alias() - 为一个类创建别名
class_alias ( string $original , string $alias [, bool $autoload = TRUE ] ) : bool
ログイン後にコピー

Example - クラスのエイリアスの管理に使用されるカテゴリ名ローダー

class AliasLoader
{
    private $aliases;
    public function __construct(array $aliases)
    {
        $this->aliases = $aliases;
    }
    public function load($alias)
    {
        if (isset($this->aliases[$alias]))
        {
            return class_alias($this->aliases[$alias], $alias);
        }
    }
}
class LongLongLongLongFoo {}
$aliases = [
    'Foo' => 'LongLongLongLongFoo',
    'Bar' => 'LongLongLongLongBar',
];
$loader =  new AliasLoader($aliases);
$loader->load('Foo');
$foo = new Foo();
var_dump($foo);  // object(LongLongLongLongFoo)#3395
ログイン後にコピー

Get

## すべて取得

関連関数:get_declared_traits — 定義されたすべての特性の配列を返します

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

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

これらの関数は実際にはほとんど必要ありません

foreach (get_declared_classes() as $class) {
    $r = new \ReflectionClass($class);
}
ログイン後にコピー

クラスの取得

関連関数get_called_class — 後期静的バインディング クラスの名前。クラス外で使用すると false を返します。

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

get_parent_class — 戻り値オブジェクトまたはクラスの親クラス名

get_called_class ( void ) : array
get_class ([ object $object = NULL ] ) : string
get_parent_class ([ mixed $obj ] ) : string
ログイン後にコピー

例 - 例外がスローされたときに例外のクラスを取得します

throw (new ModelNotFoundException)->setModel(get_called_class());
ログイン後にコピー

クラスのメンバーを取得します

関連関数:get_class_methods — クラスのメソッド名で構成される配列を返します

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

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

例 - クラス内のすべてのアクセサー プロパティを取得します

class Foo {
    public function getFullNameAttribute()
    {
    }
    public function getTextAttribute()
    {
    }
    public static function getMutatorMethods()
    {
        preg_match_all(&#39;/(?<=^|;)get([^;]+?)Attribute(;|$)/&#39;, implode(&#39;;&#39;, get_class_methods(static::class)), $matches);
        return $matches[1];
    }
}
Foo::getMutatorMethods()
// [
//     "FullName",
//     "Text",
// ]
ログイン後にコピー

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

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!