导航:首页 > 编程语言 > php动态调用类方法

php动态调用类方法

发布时间:2022-03-15 19:02:48

php如何动态调用静态方法 - 技术问答

[php]function example($className){? ???if (\"Database\" == $className) {? ?? ?? ???Database::staticFunc();? ???}}[/php]

② PHP 的类内如何使用动态函数名

PHP
中的
$$
符号可以实现,意思是正常的PHP变量前缀再加上$符号,就可以把原来的变量当作变量名。
例如:
<?php
//定义一个变量
$name
=
'';
//定义一个动态变量
$$name
=
'new';
echo
$$name;
echo
'<br>';
echo
$;
//上面的定义等同于下面的定义
$
=
'new';
echo
$;
?>

③ php如何调用同一个类里面的其他方法的变量

这个是无法直接调用的,如果想调用可以写入类的变量如下边的,这种用法是常用的
class name{
$aa="";
function a{
$b="ddd";

$this->aa=$b;

}
function b{
//这里引用$b赋予的类的变量
echo $this->aa;

}

}

④ 在php中如何设置类的属性,如何调用类的方法

PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:

<?php
classMyClass{//定义MyClass类
public$name;//定义了一个公有属性
protected$_age;//定义了一个保护属性
private$_email;//定义了一个私有属性

publicfunctionmy_method(){//定义my_method方法
}

protectedfunction_my_method2(){//定义_my_method2方法
}
}
$obj=newMyClass;//实例化
$obj->name='noname';//设置name属性
$obj->_age=12;//这是错误的,不能设置保护属性
$obj->address='KingStreet.'//设置一个未声明的属性是允许的,效果和公有属性类似,但未赋值前不能使用。
$obj->my_method()//调用公有方法
$obj->_my_method2();//这是错误的,不能调用保护方法

你需要理解继承、公有、保护和私有的概念。

继承:子类继承父类的公有、保护属性和方法。

公有:类的实例可以访问的属性和方法。

保护:只能在类的内部及其子类内部访问的属性和方法。

私有:只能在类的内部访问的属性和方法。


这是个很基础的问题,建议你多看书。

⑤ 如何在php类中执行某方法的时候自动执行另一个方法比如我执行数据插入的时候自动运行数据过滤的方法

PHP没有事件机制。有一些模拟事件的方法,但我觉得代码太繁琐了,不实用。这里我向你推荐PHP的魔术方法。


魔术方法会在调用一个不存在或是非公有的方法之前,自动根据某种规则调用另外一个方法。比如下面的类就是了这样:在调用insert方法时,判断类中是否有before_insert方法。如果有则先调用before_insert方法,并检查它的返回值,决定是否继续调用insert。如果before_insert是一个过滤函数,如果验证失败就会返回false,insert插入就不会进行了。


如果不明白可以阅读PHP手册中介绍魔术方法的部分。

<?php
classMyClass{
//如果使用类的实例调用$method,但$method方法不是公有的,就会触发此函数。
publicfunction__call($method,$args){
//检查是否存在方法$method
if(method_exists($this,$method)){
$before_method='before_'+$method;
//检查是否存在方法$before_method
if(method_exists($this,$before_method)){
//调用$before_method,检查其返回值,决定是否跳过函数执行
if(call_user_func_array(array($this,$before_method),$args)){
retruncall_user_func_array(array($this,$method),$args)
}
}else{
//$before_method不存在,直接执行函数
retruncall_user_func_array(array($this,$method),$args)
}
}else{
thrownewException('nosuchmethod'.$method);
}
}

//注意这里不要写成public
privatefunctioninsert(){}

//低调!不要写出公有的
privatefunctionbefore_insert(){}
}

$myobj=MyClass;
$myobj->insert('mytable',array('name'=>'2012'));

⑥ PHP 类怎么判断调用方法

给个例子 好好理解下吧 例:<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}

class B
{
function bar()
{
A::foo();
//parent::foo();
}
}

$a = new A();
$a->foo();//动态调用,因为new了对象
A::foo();//静态调用,直接用类名去调用,没有new对象
$b = new B();
$b->bar();//在对象$b中,A::foo();进行静态调用
B::bar();
?>
总结:静态、动态调用都指类、对象对其方法的调用,动态指的是创建(new)了对象,然后用对象变量去调用方法;静态则是没有创建对象,直接用类名去调用。至于另一个对象那就很简单了,不同的类创建不同的对象,比如class A;class B ,$a = new A();$b = new B();$a and $b 相对之间就是另一个对象了。
延伸:伪变量 $this 通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则 $this 会被定义。此时 $this 的值是那个发出调用的对象。

⑦ PHP命名空间动态调用类

不是这样调用的,命名空间只是一中命名的方式,跟调用没有直接联系。用auto_load()加载

⑧ php 如何调用类

//把你的类写好,在另一个页面需要使用直接引入即可:

<?php

require'MyClass.php';//引入你的类

$var=newMyClass;//实例化你的类

$var->action();//使用方法


//如果存在命名空间,就导入该命名空间下的类或实例化指定命名空间下的类即可:

namespaceAB;
classB{
//位于AB
}

useABB;//导入你的类
$var=newB;//直接实例化

//或者这样:
$var=newABB;//注意,需要完全限定名称

⑨ php 执行类中的方法

你是想问怎么调用test方法吗?
$func="test()";
$program->$func;
改成:
$func="test";
$program->$func();

⑩ php框架中动态加载类的几种方式

//方法1.
function__autoload($name){
require$name.'.class.php';
}


//方法2.
spl_autoload_register('load');

functionload($name){
require$name.'.class.php';
}

阅读全文

与php动态调用类方法相关的资料

热点内容
优信二手车解压后过户 浏览:62
Windows常用c编译器 浏览:778
关于改善国家网络安全的行政命令 浏览:833
安卓如何下载网易荒野pc服 浏览:654
javainetaddress 浏览:104
苹果4s固件下载完了怎么解压 浏览:1003
命令zpa 浏览:285
python编译器小程序 浏览:944
在app上看视频怎么光线调暗 浏览:540
可以中文解压的解压软件 浏览:593
安卓卸载组件应用怎么安装 浏览:913
使用面向对象编程的方式 浏览:339
程序员项目经理的年终总结范文 浏览:929
内衣的加密设计用来干嘛的 浏览:432
淮安数据加密 浏览:292
魔高一丈指标源码 浏览:982
松下php研究所 浏览:168
c回调java 浏览:401
梦幻端游长安地图互通源码 浏览:746
电脑本地文件如何上传服务器 浏览:313