類的定義,成員變量和成員函數的定義和使用php
相信我,認真看完本文,你就已經掌握了php經常使用的語法了,足以進行一些常規的開發,剩下的能夠用到再學,避免在學了忘學了忘的語法坑中沉迷過久(๑•̀ㅂ•́)و✧html
這就是今天的目的,假設咱們已經搭建好了環境(下一節會講),如今開始進行 編碼 創造世界。
首先定義一下咱們的題目,myphp編程
//定義咱們的題目 $title = "myphp";
php定義變量用$符號,php是弱類型變量語言,不區分變量的類型,""和它裏邊內容在一塊兒表示一個字符串。 另外//表示註釋,就是解釋性的話,並不會做爲代碼運行數組
//這個方法用來輸出 function show($str) { echo $str . "<br>"; }
再定義一個方法(也叫函數,只是叫法不同而已啦),定義方法用function關鍵字,括號裏的是參數,直接用變量表示就能夠,在調用的時候接收調用時傳來的參數
echo是php自帶的輸出方法,沒有括號是由於它比較特殊,能夠先無論,會用就行
.是php中字符串拼接的符號,<br>是html中的換行符,爲了讓輸出更好看瀏覽器
//方法直接調用就好 show("hello " . $title);
輸出以下圖
編程語言
//定義發生異常時觸發的函數 function error($str) { echo "{$str}<br>"; exit(); }
在""雙引號內,能夠直接用花括號包裹起來一個變量,這樣在被調用的時候變量就會直接在字符串中替換爲變量的值,單引號不能夠
exit()方法讓整個程序結束函數
//用[]能夠直接建立一個空的數組,而後一一賦值 $person1 = []; $person1['name'] = '高富帥'; $person1['sex'] = '男'; //也能夠直接建立一個有值的數組 $person2 = ['name' => '白富美', 'sex' => '女']; //這是一個二維數組,也能夠用一樣的方式建立更多維的數組 $persons = [$person1, $person2];
既然是情景劇,得有個男女主角呀,打印出來看看這個二維數組,發現下標是從0開始的,不要奇怪全部編程語言都是這樣的
接下來定義一個類,類能夠暫時理解爲一些數據和方法的集合,也就是咱們的情景劇啦性能
class MyPhp { }
定義類用class關鍵字,空格後是類的名字,注意只能是英文字母或者下劃線_開頭
情景劇不能什麼都沒有啊,咱們再給它定義一些必要的成員變量和成員方法this
class MyPhp { //表示咱們的演員們 public $actors = null; //自帶bgm的情景劇 public $music = '我心永恆'; public function __construct() { $this->start(); } public function start() { $time = time(); show("時間:{$time}"); $date = date('Y-m-d h:m:s', $time); show("哦~通常人仍是看日期好一點 {$date}"); show("播放片頭曲~~{$this->music}"); } }
//定義一個方法,讓演員加入進來 public function actorJoin($actorlist) { //咱們判斷演員是一個數組而且有兩我的才能夠,不然男女主角確定有一我的沒來或者第三者插足了 if (is_array($actorlist) && count($actorlist) == 2) { $this->actors = $actorlist; } else { error('還有演員沒有就位'); } }
is_array()方法判斷參數變量是不是數組
count()方法返回參數數組的長度
if(){}else{}結構是條件語句語法,括號內的判斷語句若是成立,程序運行if下邊大括號內的內容,不然運行else下大括號的內容編碼
//情景劇一開始們,演員得自我介紹一下吧,流程不能省 public function introduce() { if (empty($this->actors)) { error('你們好我是導演,男女主角偷偷約會還沒結束,今天可能來不了了'); } foreach ($this->actors as $actor) { $intro = "我是{$actor['name']},"; switch ($actor['sex']) { case '女': show($intro . "我是女主角。"); break; case '男': show($intro . "我是男主角。"); break; default: show($intro . "抱歉,我不知道我什麼性別。"); break; } } }
//表演開始啦 public function action() { if (empty($this->actors)) { error('演員臨時有事,謝謝你們捧場'); } //這是咱們的劇本 $play = array(); $play[] = "{$this->actors[0]['name']} 和 {$this->actors[1]['name']} 在街邊相遇"; $play[] = "{$this->actors[0]['name']} 深情脈脈的看着 {$this->actors[1]['name']}"; $play[] = "如下省略一萬字,請自行腦補......"; $play[] = "全劇終"; foreach ($play as $key => $val) { show("第{$key}幕"); show($val); } } //不能草草結束,補個片尾曲 public function end() { show('片尾曲,撒花完結'); }
$myphp = new MyPhp(); $myphp->actorJoin($persons); $myphp->introduce(); $myphp->start(); $myphp->action(); $myphp->end();
new MyPhp()會建立一個MyPhp類型的類對象,讓一個變量指向這個對象,就能夠對這個對象的成員變量和成員方法進行調用和改動了。
看看在瀏覽器上的輸出
改一改在命令行裏讓它動態跑一下看效果(怎麼弄的不重要)
好啦,回顧一下文章開頭的你會收穫到什麼,你都學會了嗎?
不要急,下一節會講搭建php環境,你就能夠本身演個情景劇啦
<?php //定義變量用 $ 符號 //php是弱類型變量語言,不區分變量的類型 //字符串 被""包圍的部分就是字符串 $title = "myphp"; //定義方法 用function關鍵字 //括號裏的是參數,直接用變量表示就能夠,在調用的時候接收調用時傳來的參數 //.是php中字符串拼接的符號 function show($str) { echo $str . "<br>"; } //方法直接調用就好 show("hello " . $title); //exit()方法讓整個程序結束 //在""雙引號內,能夠直接用花括號包裹起來一個變量,這樣在被調用的時候變量就會直接在字符串中替換爲變量的值,單引號不能夠哦 function error($str) { echo "{$str}<br>"; exit(); } //用[]能夠直接建立一個空的數組,而後一一賦值 $person1 = []; $person1['name'] = '高富帥'; $person1['sex'] = '男'; //也能夠直接建立一個有值的數組 $person2 = ['name' => '白富美', 'sex' => '女']; //這是一個二維數組,也能夠用一樣的方式建立更多維的數組 $persons = [$person1, $person2]; //定義類用class關鍵字 class MyPhp { //成員變量直接用$符號聲明就能夠 //public private protected 是成員變量的訪問控制權限 //null是php裏的空指針的關鍵字 public $actors = null; public $music = '我心永恆'; //php中__開頭(兩個下劃線)的函數都是默認自帶的函數 //__construct是構造函數,初始化一個類對象的時候會調用這個方法 public function __construct() { $this->start(); } public function start() { //time()方法獲取一個當前的時間戳 //date()方法接受兩個參數,第一個是一個字符串表示格式化格式,第二個參數是一個時間戳,返回格式化以後的時間 $time = time(); show("時間:{$time}"); $date = date('Y-m-d h:m:s', $time); show("哦~通常人仍是看日期好一點 {$date}"); //$this->music 調用成員變量,注意此時成員變量不要加$符號 show("播放片頭曲~~{$this->music}"); } //演員加入 public function actorJoin($actorlist) { //is_array()方法判斷參數變量是不是數組 //count()方法返回參數數組的長度 //if(){}else{}是條件語句語法,括號內的判斷語句若是成立,程序運行if下邊大括號內的內容,不然運行else下大括號的內容 if (is_array($actorlist) && count($actorlist) == 2) { $this->actors = $actorlist; } else { error('還有演員沒有就位'); } } public function introduce() { //empty()函數判斷數組是否爲空,空返回true,也就是正確的意思 //此處沒有else,表明若是不知足if的條件,程序直接往下走,不運行大括號內的代碼。 if (empty($this->actors)) { error('你們好我是導演,男女主角偷偷約會還沒結束,今天可能來不了了'); } //foreach循環遍歷數組,foreach($arr as $val),就是說對把$arr的全部成員依次賦值給$val,循環的次數就是$arr的長度 foreach ($this->actors as $actor) { $intro = "我是{$actor['name']},"; //switch語句針對同一地方不一樣值進行選擇,能夠避免屢次if else,性能和可讀性也更好 //switch後跟隨的括號表示選擇的變量,case後的值和冒號後的代碼,表示對應值和要運行的代碼,注意要添加break,表示跳出本次判斷,否則代碼會急需往下運行 //defaul表示沒有知足以上規定的case的時候,就運行default的代碼 switch ($actor['sex']) { case '女': show($intro . "我是女主角。"); break; case '男': show($intro . "我是男主角。"); break; default: show($intro . "抱歉,我不知道我什麼性別。"); break; } } } public function action() { if (empty($this->actors)) { error('演員臨時有事,謝謝你們捧場'); } //array()函數會返回一個數組,若是沒有參數就是一個空數組,也是建立數組的一個方式 //$this->actors[0]['name'] 返回的是$this->actors的第一個成員的name $play = array(); $play[] = "{$this->actors[0]['name']} 和 {$this->actors[1]['name']} 在街邊相遇"; $play[] = "{$this->actors[0]['name']} 深情脈脈的看着 {$this->actors[1]['name']}"; $play[] = "如下省略一萬字,請自行腦補......"; $play[] = "全劇終"; //foreach循環的第二種方式,as後邊若是是 $key=>$val 這種,就會把數組的鍵賦值給$key,值賦值給$val,比上一種多了key可使用 foreach ($play as $key => $val) { show("第{$key}幕"); show($val); } } public function end() { show('片尾曲,撒花完結'); } } $myphp = new MyPhp(); $myphp->actorJoin($persons); $myphp->introduce(); $myphp->start(); $myphp->action(); $myphp->end();