php 数组转对象_[基础编程学习] [PHP7数组详解]:第1章 (8)数组和对象
# 1.14 數組
講了7節了,終于說到重頭戲了。
數組,將關聯的數據,放在內存中。
舉一個例子,比如說一個班級,有一個班級號,班級名,描述,房間號,教導員,班級人數。可以存到一個數組內,這樣寫:
$class_array[0] = "CS122"; // class number $class_array[1] ="Programming Concepts 1"; // class name $class_array[2] ="Basic concepts of the PHP language."; // description $class_array[3] = "B123"; // room $class_array[4] = "Dr. Abraham Excell"; // instructor $class_array[5] = 50; // number of students上面這個數組,是隨用隨建的。用的時候賦值,一般呢,我們明確知道的,用下面的方式書寫:
$class_array = array('CS122','Programming Concepts 1','Basic concepts of the PHP language.','B123', 'Dr. Abraham Excell', 50 );一目了然。大家看到,這個數組內存儲的有整型,有字符串,類型不一樣,都可以放在一起。這與我們在強類型語言內看到的,聲明數組之前,必須指定數組的長度,數組元素的數據類型,不一樣,不一樣,不一樣!
要不說PHP沒有真正的數組呢。PHP的數組,說白了,就是鍵值映射數據對。
把上面額數組,使用var_dump打印出來,看一下數組的結構。我們發現,數組是默認從0開始,使用正整數作為鍵,存儲數據的。
PHP的數組也的確是這樣的機制,它還支持明確指定數組的鍵,也就是鍵值對存儲。看下面的額數據:
$class_array["class number"] = "CS122"; $class_array["class name"] = "Programming Concepts 1"; $class_array["description"] = "Basic concepts of the PHP language."; $class_array["room"] = "B123"; $class_array["instructor"] = "Dr. Abraham Excell"; $class_array["number of students"] = 50;這次,我們使用的鍵是字符串型。
我們同樣使用var_dump打印其內部結構。
鍵由字符串組成的。
上面的是一維數組,簡單數組。當然,數組也支持元素為數組,比如下邊這樣。
$class_array = array(array('CS122', 'Programming Concepts 1','Basic concepts of the PHP language.','B123', 'Dr. Abraham Excell', 50),array('CS123', 'Programming Concepts 2','Advanced concepts of the PHP language.','B124', 'Dr. Abraham Excell', 50) );這個是二維數組。后面章節再詳細說。
# 1.15 對象,屬性,和方法
PHP是一門面向對象的語言。類由屬性和方法組成。對象是類的實例。
自 PHP 5 起完全重寫了對象模型以得到更佳性能和更多特性。這是自 PHP 4 以來的最大變化。PHP 5 具有完整的對象模型。
類的訪問控制
對屬性,或者方法的訪問,通過再其前面添加關鍵字來實現。
一共有三種控制級別,public,private,protected。
public定義共有類成員,可以在任何地方被訪問;
private定義私有類成員,只能在定義的類內使用和訪問,不能繼承,不能外部訪問。
protected定義受保護的類成員,可以被自身,子類,和父類訪問。
默認,是公有,屬性和方法。
說概念不直觀,來看例子。
先聲明一個類,然后用new關鍵字實例化出來一個對象。然后這個對象就繼承了類的所有屬性和方法。
因為有訪問控制,所以只有公有的方法和屬性,才能訪問。private,protected的屬性和方法,是沒有權限訪問到的。
上面是項目中的一個完整的類。使用var聲明的屬性,默認是public公有屬性。
特別i地,__construct()方法,是在該類實例化的時候,會執行其中的代碼。該方法接收一個$path參數,在實例化的時候,會進行傳入。
其他方法,因為沒有特別說明為public/private/protected,因此默認public。可外部訪問。
下面看一下業務邏輯中,有都是如何使用這個類的。
$smarty = new template(ROOT_PATH . 'upgrade/templates/');直接用new關鍵字,實例化。傳入一個字符串參數,在實例化的時候,會執行__construct()方法。接著$smarty就可以自由訪問template類的所有公有屬性和方法了。
$smarty->assign('page_title', $position['title']); // 頁面標題 $smarty->assign('ur_here', $position['ur_here']); // 當前位置 $smarty->display('activity.dwt');大家可以看到,遵循規則定義,使用類和對象,程序封裝的更為簡潔了。
總結
以上是生活随笔為你收集整理的php 数组转对象_[基础编程学习] [PHP7数组详解]:第1章 (8)数组和对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轰6系列家族又壮大:轰6J入役海航部队
- 下一篇: python struct pack解析