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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...