目前分類:PHP (8)

瀏覽方式: 標題列表 簡短摘要

★☆紅色字體是說明,粉色字體是指令☆★


先安裝VMware Workstation + CentOS-7

Create a New Virtual Machine (建立一個虛擬網站)

選擇要安裝的路徑,之後按 Next> 去下一個步驟

設定虛擬機的名字,接著 Next> 去下一個步驟

Next >

點擊Finish邁入安裝畫面

 

等待進入安裝畫面,可以按Enter進入檢查畫面

進入安裝畫面,左邊欄位往下拉選擇「中文」,右邊就會出現「繁體中文(台灣)」可以選擇,然後「繼續」

先進入「安裝目的地(D)」完成設定

按左上角「完成」就可以了

開始安裝

設置ROOT密碼

設定完成就按左上角「完成」兩次

等待電腦安裝

安裝後「重新開機」


進入Linux的登錄畫面,輸入剛剛設定的使用者名稱和密碼

進入 network-scripts 更改網路配置(我的配置是ens33,每個人不一定都是同樣的名稱

cd /etc/sysconfig/network-scripts

ls -a

vi ifcfg-ens33

現在進入編輯模,按 i 鍵進入,然後按往下的方向鍵,將 ONBOOT=no,改成 ONBOOT=yes 

然後按 Esc,再輸入 「:wq 」,保存之後離開,就會看到被改寫的紀錄

重新啟動網路

service network restart

查看ip位址(馬賽克的地方會有一串ip,那就是虛擬機的ip位址)

ip addr show

★知道了ip位址可以建議使用「PuTTy」來連線虛擬機,操作輸入指令會比較方便★

更新服務器(安裝蠻多東西的,需要一些時間),結束會有Complete!的通知

yum -y update

安裝EPEL儲存庫 (如果有詢問安裝問題,按 y 就可以了

yum -y install epel-release

yum --enablerepo=extras

驗證EPEL Repo

yum repolist


安裝Apache Web服務器

yum -y install httpd

啟動Apache Web服務器

systemctl start httpd.service

創建httpd的系統啟動鏈接,在系統啟動時自動啟動httpd

systemctl enable httpd.service

CentOS 7.X使用防火牆CMD,因此您必須對其進行自定義,以允許外部訪問端口80(http)和443(https)。

systemctl start firewalld
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

確保Apache服務器正在運行:http://你的網址/ 

網址可以用 ip addr show 來看

安裝成功的話,進入網址會出現Apache的網頁,有大大的 「Testng 123..」 字樣在畫面裡


安裝PHP

安裝 wget 工具

yum -y install wget

安裝REMI存儲庫

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

rpm -Uvh remi-release-7*.rpm

驗證EPEL Repo

yum repolist

PHP 7.0安裝

確保 remi-php70.repo 的位置
ls /etc/yum.repos.d

啟用php7.0的REMI存儲庫(更改enabled = 0 啟用= 1),

如果要裝php7.2就去remi-php72.repo更改設定

vi /etc/yum.repos.d/remi-php70.repo

安裝PHP

yum -y install php

為PHP7安裝MySQL支持

yum -y install php-mysql

您可以安裝CMS系統(如WordPress,Joomla和Drupal)所需的常見PHP模塊

yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
 

重新啟動Apache:

systemctl restart httpd.service

我們來測試一下:創建php信息文件

vi /var/www/html/info.php

添加以下行到info.php,儲存然後離開
<?php
  phpinfo();
  phpinfo(INFO_MODULES);
?>

確保PHP工作,php模塊在那裡 http://你的ip網址/info.php
正確的話可以看到安裝的php版本


安裝MySQL

检测系统是否自带安装 mysql
rpm -qa | grep mysql

安裝 MySQL Repository

rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

安裝 MySQL Server, MySQL client 已經包括在 server 套件內

yum -y install mysql-community-server

開機自動啟動 MySQL
systemctl enable mysqld

啟動 MySQL
systemctl start mysqld

重新啟動 MySQL
systemctl restart mysqld.service

現在可以嘗試連線 MySQL

mysql -u root -p (沒有設定密碼,直接按enter進入,要離開輸入 quit 再 enter 就可以了

验证Mysql安装

mysqladmin --version


安裝 phpmyadmin

yum -y install phpmyadmin

在CentOS 7上配置phpMyAdmin
默認情况下,CentOS 7上的phpMyAdmin只允许從回環地址(127.0.0.1)訪問。為了能遠程連線,你需要變更它的設定。
用文本編輯器打開phpMyAdmin的配置文件(路徑:/etc/httpd/conf.d/phpMyAdmin.conf),找出並注釋掉帶有"Require ip XXXX"字樣的代碼。會有四行這樣的代碼,用"Require all granted"取代。重新設定過的文件如下所示(紅框內是有更改過的設定),更改完設定就儲存並離開。

vi /etc/httpd/conf.d/phpMyAdmin.conf

重啟 Apache
systemctl restart httpd

試著打開安裝好的phpmyadmin網頁(http://你的ip/phpmyadmin)

這時應該還不能登錄,因為還沒有設定root的密碼

重设Mysql密码

mysql -u root (先進入mysql

mysql> use mysql;

mysql> update user set authentication_string=password('新的密碼') where user='root'; (我是使用4個零當密碼)

mysql> flush privileges;

退出mysql
mysql> quit

重启mysql
service mysql restart

試試使用剛剛設定的新密码登录MySQL
mysql -u root -p

如果跟我遇到相同無法登入的問題,可以依照下方的指令執行應可解決

查看運行的mysql
ps -A|grep mysql

kill運行的mysql
pkill mysql

查看運行的mysql
ps -A|grep mysql

kill運行的mysql
pkill mysql

重啟mysql
service mysql restart

更改mysql密碼
mysqladmin -u root password "新密碼"; (新密碼使用1234)

mysql -u root -p (這要用新密碼登錄,紅框是輸入原來的密碼4個零出現的錯誤)

再去phpadmin使用新密碼登錄,就可以操作phpmyadmin

mingyilai 發表在 痞客邦 留言(0) 人氣()

表單(form)可以提供輸入介面,讓使用者輸入資料,然後將資料傳回Web伺服器,以做進一步的處理,常見的應用有Web搜尋、網路票選、線上問卷、會員登錄、線上訂購等。

表單的建立包含下列兩個部分:

  1. 使用 <form> 和 <input> 元素撰寫表單的介面,例如單行文字方塊、選擇鈕、核取方塊等。
  2. 撰寫表單的處理程式,也就是表單的後端處理,例如將表單資料傳送到電子郵件地址、寫入檔案、寫入資料庫或進行查詢等。

<form> 元素

accept="...":指定MIME類型(超過一個的話,中間以逗號隔開),做為Web伺服器處理表單資料的根據,例如 accept="image/gif, image/jpeg"。

accept-charset="...":指定表單資料的字元編碼方式,Web伺服器必須根據指定的字元編碼方式處理表單資料。字元編碼方式定義於RFC2045(超過一個的話,中間以逗號隔開),例如accept-charset="ISO-8859-1"。

action="uri":指定表單處理程式的相對或絕對位址,若要將表單資料傳送到電子郵件地址,可以指定電子郵件地址的uri;若沒有指定action屬性的值,表示使用預設的表單處理程式,例如:

<form method="post" action="handler.php">

<form method="post" action="mailto:ming@hotmail.com">

enctype="...":指定將表單資料傳回Web伺服器所採用的編碼方式,預設值為 "application/x-www-form-urlencoded" ,若允許上傳檔案給Web伺服器,則enctype屬性的值要指定為 "multipart/form-data" ;若要將表單資料傳送到電子郵件地址,則enctype屬性的值要指定為 "text/plain"。

method="{get,post}":指定表單資料傳送給表單處理程式的方式,當method="get"時,表單資料會被存取在HTTP GET變數 ($_GET),表單處理程式可以透過這個變數取得表單資料;當method="post"時,表單資料會被存放在HTTP POST變數($_POST),表單處理程式可以透過這個變數取得表單資料;若沒有指定method屬性的值,表示為預設值get。

name="...":指定表單的名稱(限英文且唯一),此名稱不會顯示出來,但可以做為後端處理之用,供Script或表單處理程式使用。

target="...":指定用來顯示表單處理程式之結果的目標框架。

autocomplete="{on,off,default}":指定是否啟用自動完成功能,on表示啟用,off表示關閉,default表示繼承所屬之<form>元素的autocomplete屬性,而<form>元素的autocomplete屬性預設為on,例如下面的敘述是讓用來輸入使用者名稱的單行文字方塊具有自動完成功能:

<p>Username:<input type="text" autocomplete="on"></p>

novalidate:指定在提交表單時不要進行驗證。

HTML元素的全域屬性和事件屬性,其中比較重要的有onsubmit="..."用來指定當使用者傳送表單時所要執行的Script,以及onreset="..."用來指定當使用者清除表單時所要執行的Script。

<input>元素

用來在表單中插入輸入欄位或按鈕

align="{left,center,right}" (Deprecated):指定圖片提交按鈕的對齊方式(當type="image"時)。

accept="...":指定提交档案时的MIME类型(以逗號隔開),例如<input type="file" accept="image/gif, image/jpeg">。

checked:將選擇鈕或核取方塊預設為已選取的狀態。

disabled:取消表單欄位,使表單資料無法被接受或提交。

maxlength="n":指定單行文字方塊、密碼欄位、搜尋欄位等表單欄位的最多字元數。

name="...":指定表單欄位的名稱(限英文且唯一),此名稱不會顯示出來,但可以做為後端處理之用。

notab:不允許使用者以按 [Tab] 鍵的方式移至表單欄位。

readonly:不允許使用者變更表單欄位的資料。

size="n":指定單行文字方塊、密碼欄位、搜尋欄位等表單欄位的寬度(n為字元數),size屬性和maxlength屬性的差別在於它並不是指定使用者可以輸入的字元數,而是指定使用者在畫面上可以看到的字元數。

src="url":指定圖片提交按鈕的位址(當type="image"時)。

type="state":指定表單欄位的輸入類型。

usemap:指定瀏覽器端影像地圖所在的檔案位址及名稱。

value="...":指定表單欄位的初始值。

form="formid":指定表單欄位隸屬於ID為formid的表單。

min="n"、max="n"、step="n":指定數字輸入類型或日期輸入類型的最小值、最大值和間隔值。

required:指定使用者必須在表單欄位中輸入資料,例如 <input type="search" required> 是指定使用者必須在搜尋欄位中輸入資料,否則瀏覽器會出現提示文字要求輸入。

multiple:允許使用者提交多個檔案,例如 <input type="file" multiple> ,或允許使用者輸入以逗號分隔的多個電子郵件地址,例如 <input type="email" multiple>。

pattern="...":針對表單欄位指定進一步的輸入格式,例如 <input type="tel" pattern="[0-9]{4}(\-[0-9]{6})"> 是指輸入值須符合 xxxx-xxxxxx 的格式,而 x 為 0 到 9 的數字。

autocomplete="{on,off,default}":指定是否啟用自動完成功能,on表示啟用,off表示關閉,default表示繼承所屬之<form>元素的autocomplete屬性,而<form>元素的autocomplete屬性預設為on。

autofocus:指定在載入網頁的當下,令焦點自動移至表單欄位。

placeholder="...":指定在表單欄位內顯示提示文字,待使用者將焦點移至表單欄位,提示文字會自動消失。

list:list屬性可以和 HTML5 新增的 <datalist> 元素搭配,讓使用者從預先輸入的清單中選擇資料或自行輸入其它資料。

HTML 元素的全域屬性和事件屬性,其中比較重要的有

onfocus="..." 用來指定當使用者將焦點移至表單欄位時所要執行的 Script,

onblur="..." 用來指定當使用者將焦點從表單欄位移開時所要執行的Script,

onchange="..." 用來指定當使用者修改表單欄位時所要執行的 Script,

onselect="..." 用來指定當使用者在表單欄位選取文字時所要執行的 Script。

type屬性 輸入類型 type屬性 輸入類型
type="text" 單行文字方塊 type="reset" 重新輸入按鈕
type="password" 密碼欄位 type="file" 上傳檔案
type="radio" 選擇鈕 type="image" 圖片提交按鈕
type="checkbox" 核取方塊 type="hidden" 隱藏欄位
type="submit" 提交按鈕 type="button" 一般按鈕
type="email" 電子郵件地址 type="date" 日期
type="url" 網址 type="time" 時間
type="search" 搜尋欄位 type="datetime" UTC世界標準時間
type="number" 數字 type="month" 月份
type="range" 指定範圍內的數字 type="week" 一年的第幾週
type="color" 色彩 type="datetime-local" 本地日期時間

 

 

 

 

 

 

 

 

 

 

type 屬性的預設值為 "text",當瀏覽器不支援HTML5新增的type屬性值時,就會顯示預設的單行文字方塊。HTML5除了提供更多的输入類型,更重要的是它會進行資料驗證,假設我們將 type 屬性指定為 "email" ,那麼瀏覽器會自動驗證使用者輸入的資料是谷符合正確的電子郵件地址格式,若不符合,就提示使用者重新輸入。在瀏覽器內建資料驗證的功能後,我們就不必再處處寫 JavaScript 程式碼驗證使用者輸入的資料,不僅省時省力,網頁的操作也會更順暢。

<textarea>元素

用來在表單中插入多行文字方塊,其屬性如下:

cols="n":指定多行文字方塊的寬度(n為字元數)。

disabled:取消多行文字方塊,使之無法存取。

name="...":指定多行文字方塊的名稱(限英文且唯一),此名稱不會顯示出來,但可以做為後端處理之用。

readonly:不允許使用者變更多行文字方塊的資料。

rows="n":指定多行文字方塊的高度(n為行數)。

form="formid":指定多行文字方塊隸屬於ID為formid的表單。

required:指定使用者必須在多行文字方塊中輸入資料。

autofocus:指定在載入網頁的當下,令焦點自動移至多行文字方塊。

placeholder="...":指定在多行文字方塊內顯示提示文字,待使用者將焦點移至多行文字方塊,該提示文字會自動消失。

<select>元素

用來搭配 <option> 元素在表單中插入下拉式功能表,其屬性如下,

multiple:指定使用者可以在下拉式功能表中選取多個項目。

name="...":指定下拉式功能表的名稱(限英文且唯一),此名稱不會顯示出來,但可以做為後端處理之用。

readonly:不允許使用者變更下拉式功能表的項目:

size="n":指定下拉式功能表的高度。

form="formid":指定下拉式功能表隸屬於ID為formid的表單。

required:指定使用者必須在下拉式功能表中選擇項目。

autofocus:指定在載入網頁的當下,令焦點自動移至多行文字方塊。

<option>元素

放在 <select> 元素裡面,用來指定下拉式功能表的項目,其屬性如下,

disabled:取消下拉式功能表的項目,使之無法存取。

selected:指定預先選取的項目。

value="...":指定下拉式功能表項目的值(中英文皆可),在使用者點取 [提交] 按鈕後,被選取之下拉式功能表項目的值會傳回Web伺服器,若沒有指定 value 屬性,那麼下拉式功能表項目的資料會傳回 Web 伺服器。

 

mingyilai 發表在 痞客邦 留言(0) 人氣()

「命名空間」(namespace)是一種命名方式,用來組織各個類別,函式、常數等,它和這些元素的關係就像檔案系統中目錄與檔案的關係一樣,舉例來說,假設MyClass隸屬於 \A\B\C 命名空間,那麼若要建立一個名稱為Obj、隸屬於MyClass的物件,可以寫成如下:

$Obj = new \A\B\C\MyClass;

其中第一個反斜線 \ 表示「全域空間」(global space),就像檔案系統中的根目錄一樣,在PHP開始支援命名空間之前,或當PHP程式沒有定義任何命名空間時,所有類別、函式、常數等都是放在全域空間,至於其它反斜線 \ 則是用來連接命名空間內所包含的子命名空間、類別、函式、常數等,例如此處的 A、B、C均為子命名空間。

PHP支援命名空間目的:

  • 解決名稱衝突的問題:當您自己撰寫的PHP程式和PHP內建或其它人撰寫的類別、函式、常數發生名稱衝突時,可以利用命名空間來解決。
  • 提供設定別名的功能:當PHP程式裡面的類別、函式或常數的名稱太長或不易理解時,可以利用命名空間來設定簡短易讀的別名(alias)。

事實上,如果程式裡沒有遇到上面的問題,可以不用理會命名空間的概念,因為程式依然能夠正常執行,以下面兩段程式碼為例,功能是相同的,只是第二段程式碼有加入命名空間的概念。

<?php
    $Obj = new Class1;
?>

<?php
    $Obj = new \Class1;
?>


原則上,命名空間的命名方式及分類是依照類別、函式、常數的性質而定,同時PHP程式均放在全域空間 \ 內。若要在PHP程式中自訂命名空間,可以使用namespace關鍵字,下面是一個例子,它會在網頁上顯示變數Y的值,要注意的是namespace敘述必須放在檔案的最前端。

<?php
  namespace my\name;             //在全域範圍內定義my\name命名空間
  class MyClass {}                       //在\my\name命名空間內定義MyClass類別
  function Myfunction() {}          //在\my\name命名空間內定義Myfunction函式
  const MYCONST = 1;              //在\my\name命名空間內定義MYCONST常數
  $X = new \my\name\MyClass;    //建立MyClass類別的物件,寫成$X = new MyClass;亦可
  $Y = \my\name\MYCONST;        //定義Y為常數MYCONST,寫成$Y = MYCONST;亦可
  echo $Y;                                  //顯示Y的値
?>

如果使用 use 關鍵字將 my\name 命名空間的別名設定為 A 並插在 namespace my\name; 這行下面 

use my\name as A;

這樣 $X = new \my\name\MyClass;  和 $Y = \my\name\MYCONST; 

可以改成

$X = new A\MyClass;

$Y = A\MYCONST;

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

抽象方法(abstract method),是一個特殊的方法,它必須放在「抽象類別」(abstract class)內,只有定義的部分,沒有實作的部分,實作的部份必須由子類別提供,至於抽象類別則是一種特殊的類別,只有類別的定義和部分實作,必須藉由子類別來實作或擴充其功能,也就是說抽象類別只能被繼承,不能被實作(instantiation)

 <?php
      abstract class Pay //定義抽象類別
      {
        public $EmpName;
        abstract public function Payment($Hours, $PayRate);  //定義抽象方法
      }
      class BonusPay extends Pay
      {
        public function Payment($Hours, $PayRate)  //覆蓋抽象方法(參數個數必須相同)
        {
          return $Hours * $PayRate + 5000;
        }
      }
        $Obj = new BonusPay();
      echo '加上獎金之後的薪資為'.$Obj->Payment(100, 80).'<br>';
    ?>

輸出結果為:

加上獎金之後的薪資為13000

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

「覆寫」(override)指的是子類別把繼承自父類別的方法重新定義,在這個過程中,父類別的方法並不會受到影響。透過覆寫的技巧可以實作物件導向程式設計的「多型」(polymorphism)。

下面程式碼是子類別覆寫父類別的範例:

 <?php
      class Pay  //父類別
      {
        public $Name;  //定義屬性(可以被繼承)
        public function Payment($Hours, $PayRate)  //定義方法(可以被繼承)
        {
          return $Hours * $PayRate;
        }
      }
      class Bonus extends Pay  //子類別繼承父類別Pay
      {
        public function Payment($Hours, $PayRate)        //覆蓋父類別的方法
        {
          return $Hours * $PayRate + 5000;
        }
      }
      $Obj1 = new Pay();  //呼叫父類別的方法
      $Obj2 = new Bonus();  //呼叫子類別的方法
      echo '原本的薪資為'.$Obj1->Payment(100, 80).'<br>';  //輸出$Obj1
      echo '加上獎金之後的薪資為'.$Obj2->Payment(100, 80).'<br>';  //輸出$Obj2
    ?>

執行結果:

原本的薪資為8000
加上獎金之後的薪資為13000

 

呼叫父類別內被覆寫的方法

以上面的例子來舉例:

public function Payment($Hours, $PayRate)        //覆蓋父類別的方法
        {
          return $Hours * $PayRate + 5000;
        }

紅字重覆的部份可以改為

public function Payment($Hours, $PayRate)
        {
          return parent::Payment($Hours,$PayRate) + 5000;  
        }

parent 關鍵字代表目前所在子類別的父類別,透過這個關鍵字,就可以呼叫父類別內被覆蓋的方法,也可以直接指定父類別的名稱,如下舉例

public function Payment($Hours, $PayRate)
        {
          return Pay::Payment($Hours,$PayRate) + 5000;  
        }

 

mingyilai 發表在 痞客邦 留言(0) 人氣()

可以使用public、private、protected這三個存取修飾字來設定成員的存取層級,以及是否能被繼承

如果在定義時省略了存取修飾字或使用var關鍵字則表示為public

  • public:可以被任何程式碼存取,包括被繼承。
  • private:只能被包含其定義的類別存取,不能被繼承
  • protected:只能被包含其定義的類別或其子類別存取,包括被繼承

<?php
      class ParentClass                                    //定義父類別
      {
        public $Field1;                                    //定義public屬性 (能夠被繼承)
        private $Field2;                                //定義private屬性 (不能被繼承)
        protected $Field3;                            //定義protected屬性 (能夠被繼承)
        public function Method1(){}                //定義public方法 (能夠被繼承)
        private function Method2(){}                //定義private方法 (不能被繼承)
        protected function Method3(){}            //定義protected方法 (能夠被繼承)
      }

      class ChildClass extends ParentClass        //定義子類別
      {
        public $Field4;                                    //定義public屬性 (能夠被繼承)
        private $Field5;                                //定義private屬性 (不能被繼承)
        protected $Field6;                            //定義protected屬性 (能夠被繼承)
        public function Method4(){}                //定義public方法 (能夠被繼承)
        private function Method5(){}                //定義private方法 (不能被繼承)
        protected function Method6(){}            //定義protected方法 (能夠被繼承)
      }

 ?>

ParentClass類別外的程式碼和ChildClass類別外的程式碼只能存取public成員,如果存取了其它成員,就會產生錯誤訊息,

例如ChildClass::Method2();將會產生類似"Fatal error: Call to private method ParentClass::method2() from context"的錯誤訊息

父類別內定義為private的成員只能被父類別內的程式碼存取,其它在父類別外的程式碼(包括子類別)均不得存取,對於安全性較高、不允許父類別外的程式碼存取的成員就必須定義為private;相反的,父類別內定義為protected的成員則能夠被父類別及其子類別內的程式碼存取,所以在使用繼承的同時,您必須考慮清楚是否允許使用者透繼承的方式存取某些成員,是的話才要將這些成員定義為protected。

protected賦予了子類別存取某些成員的彈性,同時也適度保護了這些成員,畢竟子類別外的程式碼無法加以存取,但這中間其實還是存在著潛的危險,因為有心人士可能會藉由繼承的方式隨意竄改父類別的protected成員,影響程式的運作,所以在定義父類別的成員存取層級時應該要仔細思考。

 

父類別和子類別構成了「類別階層」(class hierarchy),類別階層的實作相當簡單,重點在於如何設計類別階層,類別階層由上到下的定義應該是由廣義進入狹義,比方說父類別泛指公司員工,子類別的Managers和Asistants則分別是經理俏員工和助理性質的員工。

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

繼承(inheritance)是物件導向程式設計中很重要的一環,繼承就是從既有的類別建立新的類別,既有的類別叫做「基底類別」(base class),由於是基礎的類別,所以又可稱為「父類別」;繼承自基底類別就稱為「子類別」。

子類別不僅繼承了父類別的非私有成員,還可以加入新的成員或「覆寫」(override)繼承自父類別的方法,也就是將繼承父類別的方法重新定義,這過程中父類別的方法並不會受到影響。

繼承的優點是父類別的程式碼只要寫一次就可以讓子類別重複使用,這樣可以節省時間和開發成本,也提高程式的可靠性。

語法如下:

class SubClass extends ParentClass

{

[]

}

子類別的特色是繼承了父類別的非私有成員,同時還可以加入新的成員或覆寫繼承自父類別的方法。

下面語法提供的是鏈狀繼承:

<?php
      class A //父類別A
      {
       
      }
      class B extends A  //子類別B繼承父類別A
      {
        
      }
      class C extends B  //子類別C繼承父類別B
      {
        
      }
    ?>

下面語法是一個父類別同時有多個子類別:

 <?php
      class W //父類別
      {
        
      }
      class X extends W //子類別X繼承父類別W
      {
        
      }
      class Y extends W  //子類別Y繼承父類別W
      {
        
      }
      class Z extends W  //子類別Z繼承父類別W
      {
        
      }
    ?>

 

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()

參考連結:http://php.net/manual/en/book.curl.php

更詳細的名詞解釋:
http://lovetotally.pixnet.net/blog/post/10207504-%5B%E8%BD%89%E8%B2%BC%5D-php-curl-%E8%A9%B3%E8%A7%A3

文章標籤

mingyilai 發表在 痞客邦 留言(0) 人氣()