「基礎編程學習」 「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');

大家可以看到,遵循規則定義,使用類和對象,程式封裝的更為簡潔了。

Tags: