## Object 對象(復合)
### 對象初始化
要創建一個新的對象 [object](http://php.net/manual/zh/language.types.object.php),使用 *new* 語句實例化一個類:
```
<?php
class?foo
{
????function?do_foo()
????{
????????echo?"Doing?foo.";?
????}
}
$bar?=?new?foo;
$bar->do_foo();
?>
```
### 轉換為對象
如果將一個對象轉換成對象,它將不會有任何變化。如果其它任何類型的值被轉換成對象,將會創建一個內置類 *stdClass* 的實例。如果該值為 **`NULL`**,則新的實例為空。 [array](http://php.net/manual/zh/language.types.array.php) 轉換成 [object](http://php.net/manual/zh/language.types.object.php) 將使鍵名成為屬性名并具有相對應的值。注意:在這個例子里, 使用 PHP 7.2.0 之前的版本,數字鍵只能通過迭代訪問。
```
<?php
$obj?=?(object)?array('1'?=>?'foo');
var_dump(isset($obj->{'1'}));?//?PHP?7.2.0?后輸出?'bool(true)',之前版本會輸出?'bool(false)'?
var_dump(key($obj));?//?PHP?7.2.0?后輸出?'string(1)?"1"',之前版本輸出??'int(1)'?
?>
```
對于其他值,會包含進成員變量名 *scalar*。
```
<?php
$obj= (object)'ciao';
echo $obj->scalar; //outputs 'ciao'
?>
```
- 序言
- 簡介
- PHP是什么?
- PHP能做什么?
- 基本語法
- 類型
- boolean(布爾型)
- integer(整型)
- float(浮點型)
- string(字符串)
- array(數組)
- object(對象)
- callable(可調用)
- resource(資源)
- NULL(無類型)
- 偽類型
- 類型轉換的判別
- 變量
- 基礎
- 預定義變量
- 變量范圍
- 可變變量
- 來自PHP之外的變量
- 常量
- 語法
- 魔術常量
- 表達式
- 運算符
- 運算符優先級
- 算術運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 錯誤控制運算符
- 執行運算符
- 遞增/遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- if
- else
- elseif/else if
- 流程控制的替代語法
- while
- do-whille
- for
- foreach
- break
- continue
- switch
- declare
- return
- require
- include
- require_once
- include_once
- goto
- 函數
- 用戶自定義函數
- 函數的參數
- 返回值
- 可變函數
- 內部 (內置)函數
- 匿名函數
- 類與對象
- 簡介
- 基本概念
- 屬性
- 類的自動加載
- 構造函數
- 訪問控制(可見性)