Class test{
function test1()
{
echo 'inside test1';
}
function test2()
{
echo 'test2';
}
function test3()
{
echo 'test3';
}
}
$obj = new test;
$obj->test2();//prints test2
$obj->test3();//prints test3
现在我的问题是
在执行任何调用的函数之前,如何调用另一个函数?在上述情况下,我如何才能为每个其他函数调用自动调用“ test1”函数,这样我就可以获得输出,
test1
test2
test1
test3
目前我正在获得输出
test2
test3
我不能在每个函数定义中都调用“ test1”函数,因为可能有很多函数。我需要一种在调用类的任何函数之前自动调用函数的方法。
任何替代方式也可以。
最好的选择是魔术方法__call,请参见以下示例:
<?php
class test {
function __construct(){}
private function test1(){
echo "In test1", PHP_EOL;
}
private function test2(){
echo "test2", PHP_EOL;
}
protected function test3(){
return "test3" . PHP_EOL;
}
public function __call($method,$arguments) {
if(method_exists($this, $method)) {
$this->test1();
return call_user_func_array(array($this,$method),$arguments);
}
}
}
$a = new test;
$a->test2();
echo $a->test3();
/*
* Output:
* In test1
* test2
* In test1
* test3
*/
请注意,test2
和test3
在由于protected
和而被调用的上下文中不可见private
。如果这些方法是公开的,则上面的示例将失败。
test1
不必声明private
。
ideone.com示例可以在这里找到
更新 :添加到ideone的链接,添加带有返回值的示例。
我已经用PHP类分离了几个文件,现在我需要将它们放在一个函数中,如下所示: 中的类名为settings,中的类名为users。我有个错误: PHP可捕获的致命错误:传递给ajaxlogin::__construct()的参数1必须是设置的实例,没有给定,在第47行/var/www/html/idcms/admin/class/login-ajax.PHP中调用,在第13行/var/www/html
我一直在学习一些关于如何创建会话对象的课程,效果很好,如果我把完整的代码放到一个PHP文件中,一切都很好! 我想做的是将其放在另一个模块(PHP文件)中,只需使用一行(或等效行)即可,例如
问题内容: 假设有人给您一个类,具有以下构造函数: 假设您要创建一个子类。您如何有条件地在中调用构造函数? 换句话说,进行这种工作的“正确”方法是什么? 问题答案: 是的,@ JohanSjöberg说了什么。 看起来您的示例也非常人为。没有神奇的答案可以解决这个问题:) 通常,如果您有一堆构造函数,则最好将它们重构为四个单独的类(一个类仅应负责一种类型的事情)。
假设我有两个html文件具有如下功能: 我想从a.html直接指向B.html,然后直接调用函数B。我怎样才能做到?。因为我想要将JSON字符串从函数A传递到函数B,而不是使用window.onload()或$(document).ready()。 我将我的JSON字符串存储到本地存储,并将用户引导到b.html。然后函数B将读取本地存储并直接处理数据。
问题内容: 我有一个plsql函数,我想从我的函数中调用另一个函数。我怎样才能做到这一点? 这是正确的方法吗? 问题答案: 函数必须返回一个值,否则您应该具有该函数的分配目标。
问题内容: 我想知道是否有可能仅在条件为真时在javascript中调用php函数。例如 有没有这样做的方法。如果是这样,请告诉我。谢谢 问题答案: 不能以上面说明的方式调用PHP函数。但是,您可以使用AJAX调用PHP脚本,代码如下所示。您也可以在这里找到一个简单的示例。让我知道您是否需要进一步澄清 使用jQuery 准系统Javascript替代