1. 程式人生 > >PHP學習總結(一)

PHP學習總結(一)

encode 什麽 code 解決 new span att 面向對象 反斜杠

》PHP 面向對象

  1. 使用parent訪問父類的構造方法(__construct)時一定要為當前類繼承要訪問的構造方法
  2. 類的構造方法(__construct)在實例化時直接被加載,靜態方法不需要實例化
  3. 靜態成員(static)訪問方法:self::$abc
  4. 函數 spl_autoload_register(方法) 僅在使用不存在類時被觸發該方法,並傳入一個類名
  5. 實例化PDO類時如果當前文件有命名空間(namespace),則輸出後會報錯該目錄下不存在PDO類,所以必須在PDO前加一個反斜杠:\PDO
  6. 實例化一個類也可以不用變量來存放,如:new PDO()
  7. preg_match($pattern, $string); 返回匹配次數,參數一是正則表達式,二是匹配內容,此函數只匹配一次,匹配全部請用preg_match_all
  8. preg_replace(‘/\{\$([\w]+)\}/‘, " b ", ‘個{$dd}f仿{$dd}4s65f‘); 替換正則匹配到的內容並返回,參數一是表達式,二是替換內容,三是原文
  9. json_encode(); 函數中文亂碼(u265/ 類似情形)和部分符號被轉化解決方法:
foreach ($data as $key => $value) {
  $data[$key] = urlencode($value);
}
  1. 為每個值urlencode一下,返回時再urldecode(json_encode())就好了!
  2. namespace(命名空間)使用:一個文件 app\ctrl\model.php,其命名空間應為 namespace App\Ctrl;
  3. 規範:命名空間每級首字母大寫、類名首字母大寫、常量全部大寫
  4. 》命名空間和use關鍵字
  5. 為類起一個命名空間:namespace plugin;
  6. 使用use訪問這個類:use plugin\nos;
  7. 註意:使用use訪問類時必須先把這個類引入(include)
  8. 推薦使用 spl_autoload_register() 自動為你加載不存在的類


》PHP 模板

1. 為什麽要使用模板?

  • 為了分離php和HTML代碼,使可維護性更高!

2. 為什麽要緩存模板?

  • 為了提高加載速度,提高性能和數據庫承受能力!

3. 為什麽要把模板編譯成PHP文件?

  • 模板中使用了一些自定義語法,如 {$name} , 為了使其正常顯示,需將它轉換為 <?php echo $name 輸出,將轉換後的文件編譯成文件,下次直接調用!

4. 如何將模板緩存?

  • 將引入的編譯文件放如緩沖器 ob_start() ,然後使用 ob_get_contents() 將復制到的內容用 file_put_contents() 保存成緩存文件

PHP學習總結(一)