在PHP中使用OOP时在方法中使用函数
我需要了解PHP中的OOP。在PHP中使用OOP时在方法中使用函数,php,class,methods,Php,Class,Methods,我需要了解PHP中的OOP。 我可以把函数放在类方法中吗?像这样: <?php class test { function test1() { // do something function test1_1() { // something else } } } ?> 并以这种方式使用它:$test->test1->test1_1()您可以将函数放入方法(查找闭包)中。然而,你不能这样称呼他们 关闭的一个
我可以把函数放在类方法中吗?像这样:
<?php
class test {
function test1() {
// do something
function test1_1() {
// something else
}
}
}
?>
并以这种方式使用它:
$test->test1->test1_1()代码>您可以将函数放入方法(查找闭包)中。然而,你不能这样称呼他们
关闭的一个例子是
class MyClass {
public function myFunction() {
$closure = function($name) {
print "Hello, " . $name . "!";
};
$closure("World");
}
}
不,你不能。这将在中创建一个新函数,并将为您提供。不,您不能这样调用test1\u 1
。当您在函数中定义任何变量或函数时,它将成为中定义的唯一位置的局部变量或函数
因此,只有这样才行,
class test {
function test1($x) {
$test1_1 = function ($x) {
return $x*2;
};
echo $test1_1($x) ."\n";
}
}
// this will give 4
$test->test1(2);
您可以使用(>=PHP5.3)将函数存储在变量中
例如:
class Test {
public $test1_1;
public function test1() {
$this->test1_1 = function() {
echo 'Hello World';
};
}
public function __call($method, $args) {
$closure = $this->$method;
call_user_func_array($closure, $args);
}
}
$test = new test();
$test->test1();
$test->test1_1();
或者,您可以创建另一个具有所需功能的对象,并将其存储在测试中
class Test {
public $test1;
public function __construct(Test1 $test1) {
$this->test1 = $test1;
}
}
class Test1 {
public function test1_1 {
echo 'Hello World';
}
}
$test1 = new Test1();
$test = new Test($test1);
$test->test1->test1_1();
我看不出在另一个函数中编写一个函数会实现什么。您不妨编写两个函数。实际上,它不是在全局命名空间中创建的。它仅在方法范围内创建。该函数将不存在于该方法调用之外。但是关于错误的消息是正确的。不,当我说全局名称空间时,我指的是全局名称空间:)对,只在调用该方法一次之后。好吧,我想这是公平的。所以…不要因为PHP而责备你?