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->方法名();
。。為啥看別人問題只只看得到標題,看不到內容