class People {} -> 寫屬性和方法
class People {
//定義屬性
public $name = "SoRa";
//定義方法
function getMsg(){
return "hello";
}
}
二、使用 class
1. $變數 = new 類別(參數1....);
//實體化
$test1 = new People();
$test1 -> name = "Cloud";
echo "welcome";
echo $test1->name."<br />";
//由於上面是public ,所以可以直接複寫,如果是private,就不能,訪問權限問題
echo $test1->getMsg();
2. 如果想使用private 的 屬性和方法,就要使用$this
class Dog {
privete $name = "little";
function getMsg(){
return $this->name;
}
}
$test2 = new Dog();
echo $test2->getMsg();
3. php (.) 為串接,所以使用(->)
三、構造函數
構造函數是類中的一個特殊函數,當使用 new 動作符建立一個類的案例時,構造函數將會自動呼叫。當函數與類同名時,這個函數將成為構造函數。若果一個類沒有構造函數,則呼叫基類的構造函數。
不允許重複定義構造函數
class People{
private $name;
/*Java 風格 函數名和類別要一樣
function People($name){
$this->name = $name;
}
*/
//偏向python
function __construct($n){
$this->name= $n;
}
function getMsg(){
return $this->name;
}
}
$test3 = new People("Sora");
echo $test3->getMsg();
4. 相關構造函數
__construct //class被實體化的時候使用
__destruct //class被銷毀的時候使用
__call //不想報錯 調用一個類不存在的方法,實現一些特殊功能 一般用來記錄user 的非法使用
5. var_dump(類對象) //ex. var_dump($test3)
6. get & set
(1) java:
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
(2)php : 直接簡化成__get __set
class People{
function __set($key, $val){
$this->$key = $val;
}
function __get($key){
return $this->key;
}
}
$test = new People();
$test->id = "Sora";
$test->hobby = "sleeping";
echo $test->id.' love '.$test->hobby;
7. 多態
8. 封裝
9 .靜態屬性 參考連結 : 代表這屬性對於此class是唯一的,不管有多少對象
::代表域符號,不能使用->,因為他是靜態變數
(1)
class People{
public static $id;
}
$test = new People();
$test::$id="sora"; //定義
$test = new People();
echo $test::$id;
(2) 下面例子測試靜態屬性
class People{
public static $count = 1;
function __construct(){
echo "這是第", self::$count;
echo "次實體化","<br />";
self::$count++;
}
}
$test1 = new People();
$test2 = new People();
$test3 = new People();
(3) 如果不用靜態屬性而是用一般屬性的話
class People{
public $count = 1;
function __construct(){
echo "這是第", $this->count;
echo "次實體化","<br />";
$this->count++;
}
} $test1 = new People();
$test2 = new People();
$test3 = new People();
10. 靜態方法:代表此方法使屬於這個class的
靜態方法不需要實體化就可以使用,一般方法和一般屬性都必須先new一個對象才能使用,所以靜態方法裡是不能用一般方法
class People{
static function kind($name){
echo "人種:";
echo $name;
echo "<br />";
}
}
People::kind("黃種人");
$test1 = new People();
$test1->kind("白種人");
11. 常數:常數的定義是指永久不會變的內容稱之為常數
class People{
const name = "sora";
const doing = "reading";
} echo People::name;
$test = new People();
echo $test::doing;
沒有留言:
張貼留言