PHP_Bibel閱讀筆記(二)——臉黑的一天(?一年)

来源:http://www.cnblogs.com/andy1202go/archive/2016/04/27/5437581.html
-Advertisement-
Play Games

一早上起來把50包開了,一張橙卡。。。就問還有誰。。。。。。。。。。。本命年啊,我去買紅內褲還不行麽。。。。 實時更新,老哥的號的30包什麼都沒有。。。。不過中午又開了5包,皇帝,好評啊!!! 五、代碼重用與函數編寫 include警告與require的錯誤; 大量的包含實現,可以改ini文件中的: ...


  一早上起來把50包開了,一張橙卡。。。就問還有誰。。。。。。。。。。。本命年啊,我去買紅內褲還不行麽。。。。

實時更新,老哥的號的30包什麼都沒有。。。。不過中午又開了5包,皇帝,好評啊!!!

五、代碼重用與函數編寫

include警告與require的錯誤;

大量的包含實現,可以改ini文件中的:auto_prepend_file和auto_append_file;

global關鍵字也是可以用在函數內的參數的;

參數的引用傳遞和return

1 namespace Bible\Basic\FunctionUse;
2 
3 include_once 'index.php';
4 $value=10;
5 increment1($value);
6 echo $value;echo "<br/>";
7 $value2=100;
8 $value2=increment2($value2);
9 echo $value2;echo "<br/>";
 1 <?php
 2 function increment1(&$value,$mount=1)
 3 {
 4     $value=$value+$mount;
 5 }
 6 
 7 function increment2($value,$mount=1)
 8 {
 9     $value=$value+$mount;
10     return $value;
11 }

 

遞歸函數比迴圈慢且占用更多記憶體,雖然很多迴圈都可以用遞歸來代替;(在應用領域中基本不用它

六、面向對象

好玩的代碼,學到些東西!

  1 <?php
  2 namespace Bible\Basic\ObjectPage;
  3 
  4 //Chapter6.P132
  5 
  6 class Page
  7 {
  8     public $content;
  9     public $title;
 10     public $keyword;
 11     public $button=array("Home"=>"http://115.159.201.78/wordpress/",
 12         "Basic"=>"Section1.php"
 13     );
 14     
 15     public function __set($name,$value)
 16     {
 17         $this->$name=$value;
 18     }
 19     
 20     public function Display()
 21     {
 22         echo "<html>\n<head>\n";
 23         $this->DisplayTitle();
 24         $this->DisplayKeywords();
 25         $this->DisplayStyles();
 26         echo "</head>\n<body>\n";
 27         $this->DisplayHeader();
 28         $this->DisplayMenu($this->button);
 29         echo $this->content;
 30         $this->DisplayFooter();
 31         echo "</body>\n</html>\n";   
 32     }
 33     
 34     private function DisplayTitle()
 35     {
 36         echo "<title>".$this->title."</title>";
 37     }
 38     
 39     private function DisplayKeywords()
 40     {
 41         foreach ($this->keyword as $words){
 42             echo "<meta name=\"keywords\" content=\"".$words."\"/>";
 43         }
 44     }
 45     
 46     private function DisplayStyles()
 47     {
 48    ?>
 49      <style>
 50       h1 {
 51             color:white; font-size:24pt; text-align:center;
 52             font-family:arial,sans-serif
 53     }
 54     .menu {
 55         color:white; font-size:12pt; text-align:center;
 56         font-family:arial,sans-serif; font-weight:bold
 57     }
 58     td {
 59         background:black
 60     }
 61     p {
 62         color:black; font-size:12pt; text-align:justify;
 63         font-family:arial,sans-serif
 64     }
 65     p.foot {
 66         color:white; font-size:12pt; text-align:center;
 67         font-family:arial,sans-serif; font-weight:bold
 68     }
 69     a:link,a:visited,a:active {
 70         color:white
 71     }
 72     </style>
 73 <?php
 74     }
 75     
 76     private function DisplayHeader()
 77     {
 78 ?>
 79   <table width="100%" cellpadding="12" 
 80          cellspacing="0" border="0">
 81   <tr bgcolor="black">
 82     <td align="left"><img alt="img" src="logo.png"></td>
 83     <td><h1>The OOP page</h1></td>
 84   </tr>
 85 </table>
 86 <?php 
 87     }
 88     
 89     private function DisplayMenu($button)
 90     {
 91         echo "<table width=\"100%\" bgcolor=\"white\"
 92               cellpadding=\"4\"    cellsapcing=\"4\">\n ";
 93         echo "<tr>\n";
 94         $width=100/count($button);
 95         while (list($name,$url)=each($button)) {
 96             $this->DisplayButton($width,$name,$url,
 97                 !$this->IsURLCurrentPage($url));
 98         }
 99         echo "</tr>\n";
100         echo "</table>\n";
101     }
102     
103     private function IsURLCurrentPage($url)
104     {
105         if (strpos($_SERVER['PHP_SELF'], $url)==false){
106             return false;
107         } else{
108             return true;
109         }
110     }
111     
112     private function DisplayButton($width,$name,$url,$active=true)
113     {
114         if ($active){
115             echo "<td width=\"".$width."%\">
116             <a href=\"".$url."\" onclick=\"blank\">
117             <img src=\"w-logo-blue.png\" alt=\"".$name."\" border=\"0\" /></a>
118             <a href=\"".$url."\"><span class=\"menu\">".$name."</span></a>
119                 </td>";
120         } else{
121             echo "<td width=\"".$width."%\">
122             <img src=\"w-logo-white.png\">
123             <span class=\"menu\">".$name."</span></td>";            
124         }        
125     }
126     
127     private function DisplayFooter()
128     {
129 ?>
130   <table width="100%" bgcolor="black" cellpadding="12" border="0">
131   <tr>
132     <td>
133     <p class="foot">&copy; Andy Liang.</p>
134     <p class="foot">Please visit my own site:<a href="http://115.159.201.78/wordpress/">Andy's Learning Diary</a></p>
135     </td>
136   </tr>
137 </table>
138 <?php 
139     }
140 }
141 
142 $homepage=new Page();
143 $homepage->content="<p>"."I do not know what to write down, how about this?"."</p>";
144 $homepage->title="You have to try OO.";
145 $homepage->keyword=array("SAR","MRF");
146 $homepage->Display();

 

就是個預設網頁的生成對象,還是有改進空間的。

然後,php寫html,有點繁瑣,但寫完了一身爽。

<?php ?>標記的活用有點厲害啊,套路~

PS:上面代碼中的鏈接不要亂點~會嚇到你的。

當然,其實這種得到頁面在應用中是不推薦的,只是試著練下手。

七、錯誤和異常處理

try{ throw new Exception() }  catch{  }

PHP中,異常必須手動拋出;

try代碼塊和catch代碼塊是“綁定的”,每個try一定要有一個catch!

一個try可以有多個catch

 1 <?php
 2 //Session1.Chapter7.P146
 3 namespace Bible\Basic\ExceptionTry;
 4 
 5 try {
 6     throw new \ErrorException("A serious wrong has occured!", 14);
 7 }
 8 catch (\ErrorException $e){
 9     echo "Exceotion".$e->getCode().":".$e->getMessage()."<br/>"
10         ."File:".$e->getFile()."at Line:".$e->getLine()."<br/>";
11     echo $e;    
12 }

 

應用中,希望可以自定義異常處理:繼承已有的Exception類就好,需要註意的是,一般的getMessage等是final的,不能進行重載的,只有_tostring這一個方法可以重載;

 1 class MyException extends \ErrorException
 2 {
 3     function _tostring()
 4     {
 5         return "Fatal error,sorry!";
 6     }
 7 }
 8 
 9 try {
10     throw new MyException("OH", 14);
11 }
12 catch (MyException $e){
13     echo $e->_tostring();
14 }

 

應用中,常常把異常處理用在最容易出錯的I/O部分;格式一般都是

try{ if(!...) throw...} catch(){}

 

Session 2

(二) 使用MySQL

八、設計Web資料庫

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 變數的可見性(即作用域)和生命期既有區別,又有聯繫。 一個變數在程式的某處沒有可見性,但生命期任然可以存在,比如局部靜態變數的可見性在它所在的函數裡面,在函數外部不可訪問,但是它的生命期確是整個程式的運行期間;而一個變數生命期結束,它也就沒有了可見性,就像局部變數,隨著棧空間的釋放,它也就不存在了, ...
  • WebView提供了在Android應用中展示網頁的強大功能。也是目前Hybird app的大力發展的基礎。作為Android系統的一個非常重要的組件,它提供兩方面的強大的能力:對HTML的解析,佈局和繪製;對JavaScript的解釋和執行。Hybird App的組成是Native+H5,Nati ...
  • 在如今併發的環境下,對大數據量的查詢採用緩存是最好不過的了,本文使用redis搭建集群 (個人喜歡redis,對memcache不感冒) redis是3.0後增加的集群功能,非常強大 集群中應該至少有三個節點,每個節點有一備份節點。這樣算下來至少需要6台伺服器 考慮到有些朋友的電腦配置不是很高,跑多 ...
  • 運行結果: Hello JAVA Hello JAVA true b Hello JAVA false false false false 當創建String類型的變數並賦值時,會先到常量池中尋找是否存在這個常量的字元串,如果有則將引用(即地址)返回,如果沒有則在常量池中開闢空間並賦值沒這個給定的常 ...
  • from json_response import JsonResponse, json_response as json_resp 使用的語句如上,其實並不是沒有安裝,只是需要升級一下 pip install django-json-response --upgrade ...
  • 註:文章原文為Dr. Charles Severance 的 《Python for Informatics》。文中代碼用3.4版改寫,併在本機測試通過。 12.9 辭彙表 BeautifulSoup: 一個用於分析HTML文檔,並從中抓取數據的Python庫。它彌補了大部分在瀏覽器中被忽略的HTM ...
  • HashSet and HashMap "本文github地址" 總體介紹 之所以把 HashSet 和 HashMap 放在一起講解,是因為二者在Java里有著相同的實現,前者僅僅是對後者做了一層包裝,也就是說 HashSet 裡面有一個 HashMap (適配器模式) 。因此本文將重點分析 Ha ...
  • javap定義 測試類 javap命令參數 javap -version javap -p javap -public javap -protected javap -l javap -package javap -v/-p -v javap -c 文章開頭的demo中最終的結果是什麼呢? 這個地方 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...