1. 程式人生 > 程式設計 >php的instanceof和判斷閉包Closure操作示例

php的instanceof和判斷閉包Closure操作示例

本文例項講述了php的instanceof和判斷閉包Closure。分享給大家供大家參考,具體如下:

型別運算子

instanceof 用於確定一個 PHP 變數是否屬於某一類 class 的例項,在此之前用 is_a(),但是後來 is_a() 被廢棄

<?php
class MyClass
{
}
class NotMyClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>

以上例程會輸出:

bool(true)

bool(false)

instanceof 也可用來確定一個變數是不是繼承自某一父類的子類的例項:

Example #2 對繼承類使用 instanceof

<?php
class ParentClass
{
}
class MyClass extends ParentClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
?>

以上例程會輸出:

bool(true)
bool(true)

Closure 類

用於代表 匿名函式 的類.

匿名函式(在 PHP 5.3 中被引入)會產生這個型別的物件。在過去,這個類被認為是一個實現細節,但現在可以依賴它做一些事情。自 PHP 5.4 起,這個類帶有一些方法,允許在匿名函式建立後對其進行更多的控制。

除了此處列出的方法,還有一個 __invoke 方法。這是為了與其他實現了 __invoke()魔術方法 的物件保持一致性,但呼叫匿名函式的過程與它無關。

類摘要

Closure {
/* 方法 */
__construct ( void )
public static Closure bind ( Closure $closure,object $newthis [,mixed $newscope = 'static' ] )
public Closure bindTo ( object $newthis [,mixed $newscope = 'static' ] )
}

Table of Contents

  • Closure::__construct — 用於禁止例項化的建構函式
  • Closure::bind — 複製一個閉包,繫結指定的$this物件和類作用域。
  • Closure::bindTo — 複製當前閉包物件,繫結指定的$this物件和類作用域。

判斷是不是閉包

if ( $this->{$method} instanceof Closure ) {
     return call_user_func_array($this->{$method},$args);
} else {
     throw new Exception("Invalid Function");
}
//一切都要自行測試
if ( $class instanceof Closure ) {
} else {
}

參考:

http://php.net/manual/zh/language.operators.type.php

http://php.net/manual/zh/class.closure.php

更多關於PHP相關內容感興趣的讀者可檢視本站專題:《php面向物件程式設計入門教程》、《PHP基本語法入門教程》、《PHP運算與運算子用法總結》、《PHP網路程式設計技巧總結》、《PHP陣列(Array)操作技巧大全》、《php字串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》

希望本文所述對大家PHP程式設計有所幫助。