php聲明對象
⑴ php面向對象問題class聲明一個變數 $base; $this->base->cache['apps'];是怎樣情況為什麼屬性下還有數組
你劃線的這一句,是在對類的apps屬性進行賦值,前面對base屬性已經賦值過了,那個&$base的結構中可能有cache這樣一個數組。
⑵ 關於PHP如何定義一個空對象
在PHP中,如果沒有聲明一個對象然後就對其屬性賦值會出現警告提示,在此進行強制轉換即可。
PHP中創建一個空對象代碼如下:
聲明空對象:
$empty_object=(object)array();
或者
$empty_object=(object)null;
把數組轉換為對象:
$arr=array(『a』,』b』);
$empty_object=(object)$arr;
⑶ php類和對象問題
$this 的含義是表示 實例化後的 具體對象!
我們一般是先聲明一個類,然後用這個類去實例化對象!
但是,當我們在聲明這個類的時候,想在類本身內部使用本類的屬性或者方法。應該怎麼表示呢?
例如:
我聲明一個User類!它只含有一個屬性 $name;
class User
{
public $_name;
}
現在,我給User類加個方法。就用getName()方法,輸出$name屬性的值吧! 復制PHP內容到剪貼板
PHP代碼:
class User
{
public $name;
function getName()
{
echo $this->name;
}
}
//如何使用呢?
$user1 = new User();
$user1->name = '張三';
$user1->getName(); //這里就會輸出張三!
$user2 = new User();
$user2->name = '李四';
$user2->getName(); //這里會輸出李四!
怎麼理解呢?
我上面創建了兩個User對象。分別是 $user1 和 $user2 。
當我調用 $user1->getName()的時候。 上面User類中的代碼 echo $this->name ; 就是相當於是 echo $user1->name;
----------------------------------------->>>補充一下>>>
有static修飾的變數和函數不能出現$this
你看到的函數一定沒有static
建議你系統的學習一下PHP,這樣瞎猜是很浪費時間的
static $a1和self::$a1或者$a::$a1是一起使用的。
var $a1和$this->a1是一起使用的
class Abc{
static $a1;
}
class Abc{
var $a1;
}
兩個$a1是不同的。
第一個用self::$a1或者$a::$a1引用,
第二個用$this->$a1或者$a->a1引用
首先static的函數里不能出現$this,只能是self
class Abc{
public static $a1 = "im a1!<br/>";
public static function go()
{
echo(self::$a1);
}
}
Abc::go();
?>
⑷ 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聲明類的對象的時候加不加()有什麼區別 $a=new peo(); $b=new peo; 上面的有什麼區別啊
$a=new peo(); $b=new peo;
在php5以後的新版好像沒有區別。都是新實例化一個peo對象,並調用默認的構造函數。。
記得在已經淘汰的PHP4中間$b=new peo;這么寫可能算錯。所以從來沒這么寫過。
⑹ PHP中如何定義對象類型數組
應該是存到對象屬性中吧
你把
public function setDepartment($department)
{
$this->department=$department;
}
改成
public function setDepartment($department)
{
$this->department[]=$department;
}
即可
private $department;
要不要改成
private $department=array();
其實無所謂
⑺ php中既然可以直接用類名調用類中的方法和屬性,那還聲明對象幹嘛 這不是多此一舉嗎
你的寫法是 PHP 4 格式,只是PHP在向下兼容罷了。。
類方法的靜態調用問題。。你是想知道,即然可以靜態調用,為什麼還要實例化對象。
從使用的角度來說,區別在於。這是一個對象。還是一個類。主要是思路上的區別。從書寫的角度來說,也是各有優缺點。。
正如你看到的,靜態調用可以省去實例化,而且全局有效。但是用起來,更像是自定義函數。很難體現出 OOP 思想所在。
實例化之後的變數是一個對象,有明確的方法和屬性。從編程思路上來說更清晰。
如果你只是以這么簡單的代碼來舉例,感覺當然都一樣。那麼我舉個例子。
$mysql = new db_mysql(); //實例化一個MYSQL對象
$rows = $mysql->table('test')->select(); //MYSQL 對象查詢一個表數據。
$mysql->debug(); // MYSQL 列印錯誤信息
以上代碼全是 MYSQL 對象在操作。。
如果用全靜態化的方法寫。就得這么寫:
db_mysql::table('test'); //設置一個數據表,是誰在控制。
$rows = db_mysql::select(); //查詢數據,誰在查?
db_mysq::debug(); //列印錯誤信息,錯誤信息是誰發出來的?
以上代碼對象完全不清晰。只知道是 MYSQL 的一些功能。
你還覺得這么寫方便么?而且代碼長起來會更混亂。思路都已經有些混亂了。如果你試著封裝這么一個類,你會覺得更麻煩。
⑻ PHP的對象方法聲明中指定形參類型是什麼意思
function function_name( $a){
$b=$a*2;
return $b;
}
比如這個function ,$a 你就要給他指定類型為 整形或浮點型
⑼ php 的public作用
從PHP5.0版本開始,對象聲明時需要聲明對象屬性和方法的可見性,public關鍵字表示屬性或方法是公開可見的。
在PHP5.0之前未支持對象屬性和方法的可見性定義,默認所有的屬性和方法都是公開可見的,如以下的對象聲明:
//例1
classObj{
var$name='Obj';
functiongetName(){
return$this->name;
}
}
而PHP5開始推薦寫法為:
//例2
classObj{
protected$name='Obj';
publicfunctiongetName(){
return$this->name;
}
}
對於例1來說,實際上可以直接訪問name屬性,從而繞過getName方法,如
$obj=newObj();
echo$obj->name;
而對於例2來說,由於$name屬性是protected(受保護的),因此必須使用getName方法才能得到$name屬性的值。
同時這也是面向對象語言通用的一種聲明方式。
public: 公開可見
protected: 對象內部可見 (該對象的子對象同樣可以訪問)
private: 對象自身內部可見 (不包含該對象的子對象,或者說private屬性和方法不會被繼承)
⑽ PHP中怎樣創建一個空對象
1、打開php的編輯器,進入主頁面,首先我們新建好一個php文件,然後寫上注釋內容,這是編程的良好習慣。