- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用魔术函数进行重载
这是我的代码:
类文件1
class vLiteUser{
public function __call($methodname,$arguments)
{
if($methodname=='UserLogin'){
switch(count($arguments)){
case 1:
$this->UserLogin($arguments[0]);
break;
case 2:
$this->UserLogin($arguments[0],$arguments[1]);
break;
default: echo "string";
break
}
}
}
public function UserLogin($data0='')
{
echo $data0;
}
public function UserLogin($data0='',$data2='')
{
echo $pass
}
} ?>
我在另一个文件中创建了对象
$userObj = new vLiteUser();
$userObj->UserLogin(data0,data1);
$userObj->UserLogin(data0);
我是我丢失的东西,无法找到它到底是什么
另外我想问的是私有(private)函数是否也包含在重载中。
最佳答案
同一类中的方法不能有多个定义。
这是错误的,无论您为这些方法设置何种可见性(公共(public)/私有(private))都不会起作用:
public function UserLogin($data0='')
{
echo $data0;
}
public function UserLogin($data0='',$data2='')
{
echo $pass
}
此外,魔术方法__call()
只对未定义的方法有效,或者对当前范围内不可见的方法有效。
因此,您要么删除两个 function UserLogin
,要么只删除其中一个并将另一个设置为 private
。
有一些docs
关于php - 魔法函数 __call 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41361758/
我正在做一个项目,我想尝试“延迟加载”对象。 我已经使用魔术方法 __call($name, $arguments) 设置了一个简单的类。 我想要做的是传递 $arguments ,而不是作为数组,而
php 中的神奇函数 __call() 在类中使用。除了函数之外,还有类似的神奇函数吗?就像 __autoload() 用于函数一样。 例如这样的事情 function __call($name, $
我有这部分代码: class FTPClient { public function __construct() { $args_num=func_num_args();
我正在使用这两种魔术方法 _call 和 _callStatic用于我自己的 ORM/Activerow 之类的实现。它们主要用于捕获某些函数调用:__call 负责 getter 和 setter,
我正在尝试使用魔术函数进行重载 这是我的代码: 类文件1 class vLiteUser{ public function __call($methodname,$argume
我正在尝试使用魔术函数进行重载 这是我的代码: 类文件1 class vLiteUser{ public function __call($methodname,$argume
我正在使用 Mockery 通过 __call() 魔术方法模拟一个类。 问题是我的模拟对象有 __call() 与真实类的签名不同,我得到这个错误: ErrorException: Declarat
静态调用函数时是否可以使用__call魔术方法? 最佳答案 还没有,有建议的(现已有)__callStaticDocs我最后知道的管道中的方法。否则,__call 和其他 __ 魔法方法只能被对象实例
class a { public function f(&$ref1, &$ref2) { $ref1 = 'foo'; $ref2 = 'bar';
我有一个对象,它使用神奇的 __call 方法来调用不同对象的方法。 有时此方法将用于调用需要其一个或多个参数作为引用的方法。 从 php 5.3 开始,调用时按引用传递已被弃用,因此我不能依赖按引用
也许是个奇怪的问题,但是...我有一个神奇的 __call 方法,它返回某些类的实例,或者,如果没有这样的类,则在底层对象中调用相同的方法。 public function __call($name,
我正在处理的项目包含类似于 call_user_func(_array) 的包装器,它在执行前进行一些检查。其中一项检查是 method_exists(如果提供的第一个参数是类的实例,第二个是方法名称
我已经将我的项目文件移动到另一台服务器上,现在我在我的所有页面中都得到了这个,就像我错过了一些配置一样,有人知道我能做什么吗? 我正在使用 Zend Framework 1.11.11 ! 您需要哪些
我有两个模型: class Someinfo(models.Model): name = models.CharField(max_length=200) #something else class
在 PHP 中,即使方法不存在,您也可以使用“神奇”__call 函数检测何时调用该方法。 public function __call($methodName, $args) { // do
我编写了一个相当简单的延迟加载代理类,我过去曾在 http://blog.simonholywell.com/post/2072272471/logging-global-php-objects-la
我在一些 mvc 代码中使用 __call 魔法来生成一个可自动加载的表单框架,但我遇到了一个问题,我希望这里有人可以解决这个问题。 __call 魔法需要两个参数:$methodName 和 $ar
我编写了一个相当简单的延迟加载代理类,我过去曾在 http://blog.simonholywell.com/post/2072272471/logging-global-php-objects-la
假设我有以下代码: local t = {}; setmetatable(t, {__call=print}); t(3, 5, 7) 代替打印: 3 5 7 它打印: table: 0x
我认为一个简单的虚拟示例文件比长单词更能解释 t = {} t.__call = print t.__call(1) t(2) 根据documentation ,因为 t 是一个表,对 t 的调用,如
我是一名优秀的程序员,十分优秀!