classkit_import

Import new class method definitions from a file

说明

array classkit_import ( string $filename )

Note: class="simpara">此函数不能用来操作当前正常运行(或运行链上)的方法。

Warning

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

filename
The filename of the class method definitions to import

返回值

Associative array of imported methods

范例

示例 #1 classkit_import example

<?php
// file: newclass.php
class Example {
    function foo() {
        return "bar!\n";
    }
}
?>
<?php
// requires newclass.php (see above)
class Example {
    function foo() {
        return "foo!\n";
    }
}

$e = new Example();

// output original
echo $e->foo();

// import replacement method
classkit_import('newclass.php');

// output imported
echo $e->foo();

?>

以上例程会输出:

foo!
bar!

参见

  • classkit_method_add
  • classkit_method_copy

classkit_method_add

Dynamically adds a new method to a given class

说明

bool classkit_method_add ( string $classname , string $methodname , string $args , string $code [, int $flags = CLASSKIT_ACC_PUBLIC ] )

Warning

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname
The class to which this method will be added

methodname
The name of the method to add

args
Comma-delimited list of arguments for the newly-created method

code
The code to be evaluated when methodname is called

flags
The type of method to create, can be CLASSKIT_ACC_PUBLIC, CLASSKIT_ACC_PROTECTED or CLASSKIT_ACC_PRIVATE

Note:

This parameter is only used as of PHP 5, because, prior to this, all methods were public.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 classkit_method_add example

<?php
class Example {
    function foo() {
        echo "foo!\n";
    }
}

// create an Example object
$e = new Example();

// Add a new public method
classkit_method_add(
    'Example',
    'add',
    '$num1, $num2',
    'return $num1 + $num2;',
    CLASSKIT_ACC_PUBLIC
);

// add 12 + 4
echo $e->add(12, 4);
?>

以上例程会输出:

16

参见

  • classkit_method_copy
  • classkit_method_redefine
  • classkit_method_remove
  • classkit_method_rename
  • create_function

classkit_method_copy

Copies a method from class to another

说明

bool classkit_method_copy ( string $dClass , string $dMethod , string $sClass [, string $sMethod ] )

Warning

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

dClass
Destination class for copied method

dMethod
Destination method name

sClass
Source class of the method to copy

sMethod
Name of the method to copy from the source class. If this parameter is omitted, the value of dMethod is assumed.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 classkit_method_copy example

<?php
class Foo {
    function example() {
        return "foo!\n";
    }
}

class Bar {
    // initially, no methods
}

// copy the example() method from the Foo class to the Bar class, as baz()
classkit_method_copy('Bar', 'baz', 'Foo', 'example');

// output copied function
echo Bar::baz();
?>

以上例程会输出:

foo!

参见

  • classkit_method_add
  • classkit_method_redefine
  • classkit_method_remove
  • classkit_method_rename

classkit_method_redefine

Dynamically changes the code of the given method

说明

bool classkit_method_redefine ( string $classname , string $methodname , string $args , string $code [, int $flags = CLASSKIT_ACC_PUBLIC ] )

Note: class="simpara">此函数不能用来操作当前正常运行(或运行链上)的方法。

Warning

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname
The class in which to redefine the method

methodname
The name of the method to redefine

args
Comma-delimited list of arguments for the redefined method

code
The new code to be evaluated when methodname is called

flags
The redefined method can be CLASSKIT_ACC_PUBLIC, CLASSKIT_ACC_PROTECTED or CLASSKIT_ACC_PRIVATE

Note:

This parameter is only used as of PHP 5, because, prior to this, all methods were public.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 classkit_method_redefine example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }
}

// create an Example object
$e = new Example();

// output Example::foo() (before redefine)
echo "Before: " . $e->foo();

// Redefine the 'foo' method
classkit_method_redefine(
    'Example',
    'foo',
    '',
    'return "bar!\n";',
    CLASSKIT_ACC_PUBLIC
);

// output Example::foo() (after redefine)
echo "After: " . $e->foo();
?>

以上例程会输出:

Before: foo!
After: bar!

参见

  • classkit_method_add
  • classkit_method_copy
  • classkit_method_remove
  • classkit_method_rename

classkit_method_remove

Dynamically removes the given method

说明

bool classkit_method_remove ( string $classname , string $methodname )

Note: class="simpara">此函数不能用来操作当前正常运行(或运行链上)的方法。

Warning

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname
The class in which to remove the method

methodname
The name of the method to remove

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 classkit_method_remove example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }
    
    function bar() {
        return "bar!\n";
    }
}

// Remove the 'foo' method
classkit_method_remove(
    'Example',
    'foo'
);

echo implode(' ', get_class_methods('Example'));

?>

以上例程会输出:

bar

参见

  • classkit_method_add
  • classkit_method_copy
  • classkit_method_redefine
  • classkit_method_rename

classkit_method_rename

Dynamically changes the name of the given method

说明

bool classkit_method_rename ( string $classname , string $methodname , string $newname )

Note: class="simpara">此函数不能用来操作当前正常运行(或运行链上)的方法。

Warning

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname
The class in which to rename the method

methodname
The name of the method to rename

newname
The new name to give to the renamed method

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 classkit_method_rename example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }
}

// Rename the 'foo' method to 'bar'
classkit_method_rename(
    'Example',
    'foo',
    'bar'
);

// output renamed function
echo Example::bar();
?>

以上例程会输出:

foo!

参见

  • classkit_method_add
  • classkit_method_copy
  • classkit_method_redefine
  • classkit_method_remove

目录