php中命名空间、面向对象、访问控制、接口
生活随笔
收集整理的這篇文章主要介紹了
php中命名空间、面向对象、访问控制、接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
命名空間:
php中命名空間:解決自己編寫的代碼和php內置及第三方的函數、常量、類命名沖突問題(在不同的命名空間可以定義相同名稱的常量、類、函數);及為繁瑣的命名創建一個別名,具體如下:
//1.簡單定義命名空間:namespace mydemo;//定義命名空間使用關鍵字namespaceecho '要執行的代碼';//2.上面方式可以在一個文件中定義多個命名空間,但是不推薦,推薦如下方式:namespace mydemo1{echo '要執行的代碼塊1';};namespace mydemo2{echo '要執行的代碼塊2';};//3.有的時候需要將全局的非命名空間的代碼和命名空間的代碼結合使用,此時只需要將全局非命名空間中的代碼放入namespace{}大括號中,注意:此時沒有命名名稱,如:namespace mytest{echo '要執行的代碼'};namespace{echo '全局非命名空間的代碼'};//4.注意:在命名空間之前不能出現非php代碼,包括空白符等,但是用于聲明文件編碼方式的declare可以,如:declare(encoding='UTF-8');namespase mydemo;//5.子命名空間:和文件的目錄相似,php允許命名空間名稱層次化,如:namespace mydemo\test;$str = 'hello';//此時字符串訪問方式:\mydemo\test\$str;命名空間的使用:
//1.訪問其他命名空間的變量、類、函數:若要訪問其他命名空間變量、類、函數,那么就要在名稱前面加路徑,如:namespace myspace1;$num = 2;class car {function run(){echo '車子跑'}};function f1(){echo '這是f1函數'};namespace myspace2;echo \myspace1\$num;//在myspace2中訪問myspace1中的變量、類、函數,注意前面也要給斜杠var_dump(new \myspace1\car());\myspace1\f1();//2.定義子命名空間:命名空間類似文件夾目錄,可以在一個名空間中定義子命名空間,語法是在命名空間名稱前面加父級路徑,如:namespace fatherspace;$num = 2;namespace fatherspace\sonspace;//此時在fatherspace命名空間下面定義了一個sonspace命名空間,當然這里可以定義多個子命名空間,也可以定義多層$num = 3;//3.公共空間中的變量、類、函數:指沒有在命名空間內定義的變量、類、函數,公共空間中定義的變量、類、函數可以直接在命名空間中使用,但是使用時要加\表示在根目錄下;使用完依然是公共空間的,如:$num = 3;namespace myselfspace;echo \$num;//4.給命名空間定義別名:php中使用use關鍵字定義別名,如:use mydemo\f1 as fn;//當別名為最后一個層級時,可以省略as及別名,如:use mydemo\classname等同于:use mydemo\classname as classname;面向對象:
對象是一個信息或對信息進行處理的描述所組成的整體,是對現實世界的抽象,生活中萬物皆對象。
面向對象內容:
//1.類:定義一件事物的抽象特點,包含數據的形式及對數據的操作,類的定義如下:class Car{var $car1;var $car2 = '五菱';function run(){echo '跑';};};//2.對象:是類的實例,在類被創建后,通過new關鍵字來實例化一個對象,如:$boama = new Car;//可以通過new關鍵字使用同一個類創建多個對象。//3.成員變量:定義在類里面的變量,該值對外是不可見的,但可以通過成員函數訪問,當類被實例化后該變量稱對象屬性。class Car{var $car1;//成員變量function run(){echo '跑';};}//4.成員函數:定義在類里面可以訪問對象的數據。class Car{var $car1;function run(){echo '跑';};//成員函數}//5.繼承:子類共享父類數據結構和方法的機制。class mycar extends Car {};//php使用關鍵字extends繼承一個類,php不支持多繼承。//6.父類:一個類被其他類繼承后可稱為父類,別名基類,超類。//7.子類:繼承了其它類的類稱為子類,別名派生類。//8.多態:多態指相同的函數或方法作用于多種類型的對象上獲得不同的結果這一現象。//9.重載:同名不同參數的函數或方法之間互相稱重載。//10.抽象性:將有一致屬性和行為的對象抽象成類。//11.封裝:將現實中某個客體的屬性和行為捆綁在一起,并放置在一個邏輯單元中。//12.構造函數:用于創建對象時初始化對象(變量賦值的過程),總與new 一起使用。//13.析構函數:對象結束生命周期后,析構函數中使用delete釋放內存空間,和構造函數相反。class Car {function __construct() {//類中的構造函數通過__construct聲明,$this指這個類->可以理解為的,和js中冒號 :差不多$this->name = "baoma";}function __destruct() {//類中解析函數通過__destruct聲明,在解析函數中寫入屬性或方法對屬性或方法進行銷毀。print "銷毀 " . $this->name . "\n";}}訪問控制:
php對屬性或方法的控制是通過前面添加關鍵字控制:public公有、protected受保護、private私有,如:
class Car{private var $car2 = 'baoma';public function run(){echo '跑';};}接口:
用來實現某些方法而無需定義具體方法,使用關鍵字interface定義接口,接口中的所有方法都是公有的,要實現一個接口使用implements操作符,如:
interface temapi{//定義一個接口public function setnames($name);};class dog implements temapi{public function setnames($name){$this->vars[$name]= 'xiaohei';};};提示:本文圖片等素材來源于網絡,若有侵權,請發郵件至郵箱:810665436@qq.com聯系筆者刪除。
筆者:苦海
總結
以上是生活随笔為你收集整理的php中命名空间、面向对象、访问控制、接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中继承、this关键字、supe
- 下一篇: java中常用API、Scanner类、