php调用对象方法
❶ 怎么给 php 对象动态添加方法
来个例子:
<?php
$a=newstdclass();
$a->name=function(){echo'mylove';};
//调用的时候有点麻烦
$b=$a->name;
$b();
后来我想想,这特么和下面这种写法是一样的:
<?php
$a=newstdclass();
$b=$a->name=function(){echo'mylove';};
$b();
反正也不好玩啊。
❷ php创建一个类,在类中声明一个数组存放另一个对象,为什么无法调用数组中对象的方法
//新建一个类User用来存放这,三个数据
//结果放到一个User数组中,你看这可以吗?
//还是说要放到一个list中?
public class ObjectTest {
public static void main(String[] args) {
String[] id = new String[8];
String[] type = new String[8];
String[] username = new String[8];
User[] users = getUsers(type, id, username);
}
private static User[] getUsers(String[] type, String[] id, String[] username) {
User[] users = new User[type.length];
for (int i = 0; i < type.length; i++) {
users[i] = new User(id[i], type[i], username[i]);
}
return users;
}
}
class User {
public User(String id, String tpye, String username) {
this.tpye = tpye;
this.id = id;
this.username = username;
}
private String tpye;
private String id;
private String username;
public String getTpye() {
return this.tpye;
}
public String getId() {
return this.id;
}
public String getUsername() {
return this.username;
}
public void setTpye(String tpye) {
this.tpye = tpye;
}
public void setId(String id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
}
❸ php 面向对象中类内方法调用方法,可取吗
classA{
staticfunctionfunAS(){
//dosomething
}
functionfunA(){
//dosomething
}
functionfunB(){
//调用本类的A方法,需要实例化
$this->funA();
//调用本类的静态方法,无需实例化
self::funAS();
//调用其它类类方法,需实例化
$o=newB();
$o->funA();
//调用其它类静态方法,无需实例化
B::funAS();
}
}
classB(){
staticfuntionfunAS(){
//dosomething
}
functionfunA(){
//dosomething
}
}
至于限制,看function前面有没有其他修饰符
若有protect,则该方法只能被本类和它的继承类调用
若有private,则该方法只能被本类调用
❹ 微擎PHP怎样调用数据库里a:1:{s:4:"type";s:1:"2";}内数组内容
$a=a:1:{s:4:"type";s:1:"2";};
$b=unserialize($a);
print_r($b);
序列化serialize()与反序列化unserialize():
序列化serialize():就是将一个变量所代表的
“内存数据”转换为“字符串”的形式,并持久保存在硬盘(写入文件中保存)上的一种做法,即,把“内存数据”转换为“字符串”然后保存到文件中;
反序列化unserialize():就是将序列化之后保存在硬盘(文件)上的“字符串数据”恢复为其原来的内存形式的变量数据的一种做法,即,把文件中保存的序列化后的“字符串数据”恢复为“内存数据”;
对象的序列化:1.对一个对象进行序列化,只能将其属性数据“保存起来”,而方法被忽略(方法不是数据),但是类名也能被保存起来,因此反序列化的位置只要有该类文件,就仍然可以将对象还原,即该对象的属性和方法依然可以使用;
2.对象序列化的时候,会自动调用该对象所属类的__sleep()魔术方法;
对象的反序列化:1.对一个对象进行反序列化,其实是恢复原来保存起来的属性数据,而且,此时必须需要依赖该对象原来的所属类;
2.对象反序列化的时候,会自动调用该对象所属类的__wakeup()魔术方法;
总结:一般当我们需要将数据保存到文件中时会用到序列化,保存到数据库中一般不这样用,因为序列化和反序列化的过程其实很耗时
❺ php如何在一个页面调用另一个页面的方法
先用include或require引入要调用的方法所在的类文件,例:
include
'./page.class.php';
然后看该方法是否静态方法,如果是:
直接用类名调用该方法,例:page::方法名();
如果不是静态方法:
先实例化出该类的对象,再用对象调用,例:
$a=new
Page();
$a->方法名();
。。为啥看别人问题只只看得到标题,看不到内容