【PHP程式設計+MySQL資料庫+PHPMaker整合教學+技術諮詢】 本月特價優惠中! 動態的架站程式時代,要自訂PHP程式頁面有那麼難嗎? MySQL『資料庫』與『資料表』,用PHP程式有那麼難控制嗎? 你不用死背『PHP程式』與『MySQL資料庫』語法也能獨自設計完成! 這是自動化軟體程式的年代 (用PHPMaker 設計在彈指之間就能自動生成整個 PHP 程式系統) 這不是:神話!程式軟體模組取代了這一切複雜的工程。 你可以自己建構自己專屬的: 訂購表單、會員名單、擴增購物車特殊頁面 →POS 系統、CRM 系統、ERP 系統、HRM 系統...等等 (更可以加入數據資源銷售賺錢!) 該是:【見證奇蹟】的時候了! 非親眼所見....真的無法相信此神兵利器!

PHP程式設計教學

PHP程式設計問題諮詢:
我想在每個檔最前,最後面都加上一檔.但一個一個添加很麻煩
有沒有解決的辦法?

———————————————————
PHP程式設計問題回覆:
 我想在每個檔最前,最後面都加上一檔.但一個一個添加很麻煩
您可以這樣處理:

1:打開php.ini文件
設置 include_path= "c:"

2:寫兩個文件
auto_prepend_file.php 和 auto_append_file.php 保存在c磁碟,他們將自動依附在每個php檔的頭部和尾部.

3:在php.ini中找到:
Automatically add files before or after any PHP document.
auto_prepend_file = auto_prepend_file.php;依附在頭部
auto_append_file = auto_append_file.php;依附在尾部

以後你每個php檔就相當於
<?php
Include "auto_prepend_file.php" ;

…….//這裏是你的程式

Include "auto_append_file.php";
?>
———————————————————

PHP程式設計問題諮詢:
我點擊後退按鈕,為什麼之前填寫的東西不見?

———————————————————
PHP程式設計問題回覆:
我點擊後退按鈕,為什麼之前填寫的東西不見,可以參考以下的說明:

這是因為你使用了session.
解決辦法:

——————————————————-
<?php
session_cache_limiter('private, must-revalidate');
session_start();
………..
……….
?>

——————————————————

GUID: 即Globally Unique Identifier(全球唯一標識符)
也稱作 UUID(Universally Unique IDentifier) 。

GUID是一個通過特定算法產生的二進位長度為128位的數字標識符,用於指示產品的唯一性。
GUID 主要用於在擁有多個節點、多台電腦的網路或系統中,配置必須具有唯一性的標識符。

在 Windows 平台上,GUID 廣泛應用於微軟的產品中,用於標識如如註冊表項、類及介面標識、資料庫、系統目錄等對象。   

php中並沒有標準的guid,只是有個函數 uniqid() 生成唯一id。
而在mysql中有函數生成guid:SELECT UUID()

PHP程式設計問題諮詢:
我想要如何配置GD庫,其方法為何?

———————————————————
PHP程式設計問題回覆:
您要如何配置GD庫,可以參考以下的範例:

1:用dos命令(也可以手動操作,拷貝dlls檔夾裏所有dll檔到system32目錄下) copy c:phpdlls*.dll c:windowssystem32
2:打開php.ini
設置extension_dir = "c:/php/extensions/";
3:
extension=php_gd2.dll;把extension前面的逗號去掉,如果沒有php_gd2.dll,php_gd.dll也一樣,保證確實存在這一檔c:/php/extensions/php_gd2.dll
4:運行下面程式進行測試
<?php
Ob_end_flush();
//注意,在此之前不能向流覽器輸出任何資訊,要注意是否設置了 auto_prepend_file.
header ("Content-type: image/png");
$im = @imagecreate (200, 100)
    or die ("無法創建圖像");
$background_color = imagecolorallocate ($im, 0,0, 0);
$text_color = imagecolorallocate ($im, 230, 140, 150);
imagestring ($im, 3, 30, 50,  "A Simple Text String", $text_color);
imagepng ($im);
?>

———————————————————————-

     您知道PHP6將實現的8個特性和功能嗎?   

PHP創始人Rasmus Lerdorf提出的一個wishlist:

1.完全拋棄全局變量

2. 刪除Magic Quotes

3. 增加一個輸入過濾延伸代替Magic Quotes,提供一個機制讓開發者很容易自己關閉或開啟這個功能。
          而不是像現在的作法那樣先判斷伺服器的GPC是否開啟。

4. 預設加入opcode cache,對代碼執行進行速度上的改善。
          目前大多用的是PECL或APC,但有一個官方的解決專案顯然是比較好的。

5. 刪除安全模式 safe_mode,改進open_basedir

6. 刪除在PHP3/4中已經被標示為過時deprecated的內容

另兩個考慮中的,但是意義不太大的:

7. 標識符(程式中使用的變量名、函數名、標號等)大小寫敏感

8. 刪除各種函數的別名

PHP程式設計問題諮詢:
請問,我用Apache後首頁出現亂碼如何排除?

———————————————————
PHP程式設計問題回覆:
您用Apache後首頁出現亂碼要排除,可以參考以下的說明:

———————————————————

方法一:
AddDefaultCharset ISO-8859-1 改為 AddDefaultCharset off

方法二:
AddDefaultCharset big5

———————————————————

 在搜尋引擎排名SEO教學中,總教頭常提到Google PageRank PR值
那如何達成Google PageRank PR值線上查詢?其php代碼又該如何撰寫?

PR值全稱為PageRank.PageRank(網頁層級)是Google用於評測一個網頁重要性的一種方法。
在揉合了諸如Title標識和Keywords標識等所有其它因素之後

Google通過PageRank來調整結果.使那些更具重要性的網頁在搜尋結果中另網站排名獲得提升
從而提高搜尋結果的關聯性和質量.PR值最高為10.一般PR值達到4.就算是一個不錯的網站了

PageRank是google搜尋排名算法中的一個組成部分,層級從1到10級
10級為滿分PR值越高說明該網頁在搜尋排名中的地位越重要

也就是說,在其他條件相同的情況下,PR值高的網站在google搜尋結果的排名中有優先權。
———————————————
< ?php

// Edit this to your website url:
$myWebSite = http://www.mycodes.net;

define('GMAG', 0xE6359A60);

//unsigned shift right
function zeroFill($a, $b) {
$z = hexdec(80000000);

if ($z & $a) {
$a = ($a>>1);
$a &= (~$z);
$a |= 0x40000000;
$a = ($a>>($b-1));
} else {
$a = ($a>>$b);
}

return $a;
}

function mix($a,$b,$c) {

$a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
$b -= $c; $b -= $a; $b ^= ($a< &lt;8);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
$b -= $c; $b -= $a; $b ^= ($a<&lt;16);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
$b -= $c; $b -= $a; $b ^= ($a<&lt;10);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,15));

return array($a,$b,$c);
}

function GCH($url, $length=null, $init=GMAG) {

if(is_null($length)) {
$length = sizeof($url);
}

$a = $b = 0x9E3779B9;
$c = $init;
$k = 0;
$len = $length;

while($len >= 12) {
$a += ($url[$k+0] +($url[$k+1]< &lt;8) +($url[$k+2]<&lt;16) +($url[$k+3]<&lt;24));
$b += ($url[$k+4] +($url[$k+5]<&lt;8) +($url[$k+6]<&lt;16) +($url[$k+7]<&lt;24));
$c += ($url[$k+8] +($url[$k+9]<&lt;8) +($url[$k+10]<&lt;16)+($url[$k+11]<&lt;24));
$mix = mix($a,$b,$c);
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
$k += 12;
$len -= 12;
}

$c += $length;

switch($len) {/* all the case statements fall through */
case 11: $c+=($url[$k+10]<&lt;24);
case 10: $c+=($url[$k+9]<&lt;16);
case 9 : $c+=($url[$k+8]<&lt;8);
/* the first byte of c is reserved for the length */
case 8 : $b+=($url[$k+7]<&lt;24);
case 7 : $b+=($url[$k+6]<&lt;16);
case 6 : $b+=($url[$k+5]<&lt;8);
case 5 : $b+=($url[$k+4]);
case 4 : $a+=($url[$k+3]<&lt;24);
case 3 : $a+=($url[$k+2]<&lt;16);
case 2 : $a+=($url[$k+1]<&lt;8);
case 1 : $a+=($url[$k+0]);
/* case 0: nothing left to add */
}

$mix = mix($a,$b,$c);
/*——————————————– report the result */
return $mix[2];
}

//converts a string into an array of integers containing the numeric value of the char
function strord($string) {

for($i=0;$i<strlen($string);$i++) {
$result[$i] = ord($string{$i});
}

return $result;
}

function getPR($_url) {

$url = 'info:'.$_url;
$ch = GCH(strord($url));
$url='info:'.urlencode($_url);
$pr = file("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$url");
$pr_str = implode("", $pr);

return substr($pr_str,strrpos($pr_str, ":")+1);
}

echo "<br>The PR of $myWebsite is: ".getPR($myWebSite);
?>
 
———————————————————–

您知道在使用PHP程式中,日曆算法是如何達成的嗎?

/**
* 日曆
*
*/
if (function_exists(‘date_default_timezone_set’)) {
date_default_timezone_set(‘Asia/Chongqing’);
}
$date = isset($_GET[‘date’]) ? $_GET[‘date’] : date(‘Y-m-d’);
$date = getdate(strtotime($date));
$end = getdate(mktime(0, 0, 0, $date[‘mon’] + 1, 1, $date[‘year’]) – 1);
$start = getdate(mktime(0, 0, 0, $date[‘mon’], 1, $date[‘year’]));
$pre = date(‘Y-m-d’, $start[0] – 1);
$next = date(‘Y-m-d’, $end[0] + 86400);
$html = ‘<table border=”1″>’;
$html .= ‘<tr>’;
$html .= ‘<td><a href=”‘ . $PHP_SELF . ‘?date=’ . $pre . ‘”>-</a></td>’;
$html .= ‘<td colspan=”5″>’ . $date[‘year’] . ‘;’ . $date[‘month’] . ‘</td>’;
$html .= ‘<td><a href=”‘ . $PHP_SELF . ‘?date=’ . $next . ‘”>+</a></td>’;
$html .= ‘</tr>’;
$arr_tpl = array(0 => ”, 1 => ”, 2 => ”, 3 => ”, 4 => ”, 5 => ”, 6 => ”);
$date_arr = array();
$j = 0;
for ($i = 0; $i < $end[‘mday’]; $i++) {
if (!isset($date_arr[$j])) {
$date_arr[$j] = $arr_tpl;
}
$date_arr[$j][($i+$start[‘wday’])%7] = $i+1;
if ($date_arr[$j][6]) {
$j++;
}
}
foreach ($date_arr as $value) {
$html .= ‘<tr>’;
foreach ($value as $v) {
if ($v) {
if ($v == $date[‘mday’]) {
$html .= ‘<td><b>’ . $v . ‘</b></td>’;
} else {
$html .= ‘<td>’ . $v . ‘</td>’;
}
} else {
$html .= ‘<td>&nbsp;</td>’;
}
}
$html .= ‘</tr>’;
}
$html .= ‘</table>’;
echo $html;

PHP程式編輯器 MPSOFTWARE phpDesigner 8.1.0.10 版

phpDesigner8 是一個強大的和閃電般快速的PHP IDE和PHP編輯器
它也是一個全功能的HTML5,CSS3和JavaScript編輯器功能,以提高您的生產力提高 – 為初學者和專業開發人員!
一切從編輯 phpDesigner8 設計、分析、除錯PHP、HTML5、CSS3供JavaScript和其他語系的網站發佈!



MPSOFTWARE phpDesigner 8 主要特點:

與朦朧的智慧語法高亮和沒有暗淡
»PHP,HTML和CSS的語法檢查
»PHP,HTML CSS和JavaScript代碼完成,內含jQuery和其他流行的JavaScript框架
PHP和JavaScript代碼提示
»HTML的代碼檢查
»直觀的模式瀏覽通過您的代碼,內含你的項目
支援嵌套的PHP對像
»PHP類工作的進階支援
支援PHP和JavaScript面向對像寫程式(OOP)
»HTML的代碼檢查
»為PHP代碼瀏覽器(過濾器),CSS和JavaScript的
»工作與任何PHP框架(內含通過代碼完成和代碼提示)
»前往任何PHP,CSS和JavaScript的聲明
»見在phpDesigner7 jQuery的支援行動
除錯和配置檔與Xdebug的PHP腳本
»簡單易學的介面和有趣的使用

phpDesigner 8 is more than just a powerful and lightning fast PHP IDE and PHP EDITOR – it's also a full-featured HTML5-, CSS3- and JavaScript editor boosted with features to increase your productivity — for both beginners and professional developers!
phpDesigner 8 assists you with everything from editing, analyzing, debugging to publishing websites powered by PHP, HTML5, CSS3 to JavaScript and other languages!

Main features:
» Intelligent syntax highlighting with dim and no dim
» Syntax check for PHP, HTML and CSS
» Code completion for PHP, HTML, CSS and javascript including jQuery and other popular javascript frameworks
» Code tip for PHP and javascript
» Code inspector for HTML
» Intuitive way to navigate through your code including your projects
» Support for nested PHP objects
» Advanced support for working with PHP classes
» Support for PHP and javascript object oriented programming (oop)
» Code inspector for HTML
» Code explorer for PHP (with filter), CSS and javascript
» Work with any PHP framework (including through the code completion and code tip)
» Go to any PHP, CSS and javascript declarations
» See support for jQuery in phpDesigner 7 in action
» Debug and profile PHP scripts with Xdebug
» Easy to learn interface and fun to use


MPSOFTWARE phpDesigner 8 Size: 23.9 MB


PHP程式編輯器 MPSOFTWARE phpDesigner 8.1.0.10 版
Home Page: http://www.mpsoftware.dk/phpdesigner.php

PHP+MySQL+Dreamweaver整合教學(PHPMaker運用設計網站教學)訪客最常問的10個問題:
1.聽說:PHPMaker軟體能開發與快速生成網站,為何網路與書局找不到中文相關資訊?
總教頭回覆:
PHPMaker軟體是外國開發的軟體,知道的人用它來快速開發與快速生成網站賺錢
這種能快速賺大錢的好工具當然要『暗槓』,程式設計師怎會笨到:去寫書宣揚它呢?
PHPMaker軟體的關建設定非常重要!這又豈是一般的『講師』能駕馭的呢?
再則此軟體全是英文(需要配合MySQL資料庫與外掛程式或第三方插件)才能完美演出
還要有訂單與進、銷、存的會計觀念,配合 Microsoft Excel 更是好用….
總教頭獨家將此軟體中文化,加上自己研發的一些運用密技,讓你在『網賺』上更加好用。

2.PHP程式設計+MySQL資料庫+Dreamweaver(PHPMaker運用)整合教學,有那些贈品?
總教頭回覆:
1.總教頭自己獨家 PHPMaker繁體中文化版(中文化修正過157次的正確版)
2.贈送你PHP頁面 Dreamweaver 能快速處理的補強功能擴充程式
3.PHP 5 中文技術手冊(繁體中文HTML網路版)
4.MySQL資料庫語法(繁體中文HTML網路版)

繼續閱讀

PHP程式設計問題諮詢:
請問,如何遠端鏈結Mysql資料庫?

———————————————————
PHP程式設計問題回覆:
您要從遠端鏈結Mysql資料庫,可以參考以下的說明:

———————————————————

在增加用戶的mysql表裏有一個host欄位,修改為"%",或者指定允許連接的ip位址,這樣,你就可以遠端調用了。

$link=mysql_connect("192.168.1.80:3306","root","");

———————————————————

PHP程式設計問題諮詢:
我想利用PHP上傳文件,其方法為何?

———————————————————
PHP程式設計問題回覆:
您要利用PHP上傳文件,可以參考以下的範例:

<html><head>
<title>上載文件表單</title></head>
<body>
<form enctype="multipart/form-data" action="" method="post">
請選擇檔: <br>
<input name="upload_file" type="file"><br>
<input type="submit" value="上傳文件">
</form>
</body>
</html>

<?
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];

if($upload_file){
$file_size_max = 1000*1000;// 1M限制檔上傳最大容量(bytes)
$store_dir = "d:/";// 上傳檔的儲存位置
$accept_overwrite = 1;//是否允許覆蓋相同檔
// 檢查檔大小
if ($upload_file_size > $file_size_max) {
echo "對不起,你的檔容量大於規定";
exit;
}

// 檢查讀寫檔
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
Echo   "存在相同檔案名的文件";
exit;
}

//複製檔到指定目錄
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "複製檔失敗";
exit;
}

}

Echo   "<p>你上傳了文件:";
echo  $_FILES['upload_file']['name'];
echo "<br>";
//用戶端機器文件的原名稱。

Echo   "文件的 MIME 類型為:";
echo $_FILES['upload_file']['type'];
//檔的 MIME 類型,需要流覽器提供該資訊的支援,例如“image/gif”。
echo "<br>";

Echo   "上傳文件大小:";
echo $_FILES['upload_file']['size'];
//已上傳檔的大小,單位為位元組。
echo "<br>";

Echo   "檔上傳後被臨時儲存為:";
echo $_FILES['upload_file']['tmp_name'];
//檔被上傳後在服務端儲存的暫存檔案名。
echo "<br>";

$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
        case 0:
            Echo   "上傳成功"; break;
        case 1:
            Echo   "上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值."; break;
        case 2:
            Echo   "上傳檔的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。";    break;
        case 3:
            Echo   "檔只有部分被上傳";break;
        case 4:
            Echo   "沒有檔被上傳";break;
}
?>

————————————————————-

改善PHP開發模式的方法
  
關於如何使用PHP語系來開發應用程式,我們每個人都有自己的技巧和方法。
實際上,我們大家都知道,有很多種模式和方法可以讓開發變得更加簡單。
儘管如此,還是有一些方法,尤其是編碼樣式和習慣,是大家公認的。
我們列舉出了可以改善PHP開發模式的方法。

我們不應該輕視代碼的組織,選取的編碼樣式應該是事先約定好的,許多人只是隨機的在做這些事情,這讓他們的代碼變得十分混亂,十分令人難以理解。

你可以在那裡宣稱自己是最好的開發者,但是,如果你的代碼缺乏良好的組織,你是不會走的太遠的。
舉個例子,比如說,在當地的社區大學中,你是一名教師。
如果你決定從初級和進階的資料中隨機地選取一大堆知識,然後按照這種順序把這些知識教授給你的學生
而不是從初級到進階,循序漸進地教授給你的學生,那麼你的學生們會十分困惑,而且,作為一名教師,他們是不會歡迎你的,如果他們不歡迎你,他們就不會上你的課。

我的觀點是,找出一種適合你的組織方法和編碼樣式,並且一直堅持下去,這樣的話,你的代碼的組織和配置會變得十分有條理。

對於獨立的開發者來說,內定檔案並不是很流行,它主要是面向企業項目和開源項目的。
但是,這並不是說,內定檔案對你的項目沒有好處。對於你的項目來說,內定檔案是改善你的編碼和工作模式的重中之重。

許多支援PHP的整合開發環境(IDE)都支援內定檔案,這可以說明你記住你建立那些函數的時候用了哪些參數,或是,那些函數的功能是什麼?

如果你把你的項目移交給另外一個開發者或團隊,他們一定會對這份內定檔案心存感激的,因為它傳遞了和PHP項目(尤其是那些規模較大的PHP項目)有關的大量訊息。
 

PHP程式設計問題諮詢:
請問,怎麼用php解釋字元?

———————————————————
PHP程式設計問題回覆:
怎麼用php解釋字元?,您可以參考以下的說明:

———————————————————
怎麼用php解釋字元呢?

例如:輸入2+2*(1+2),自動輸出8
可以用eval函數

<form method=post action="">
<input type="text" name="str"><input type="submit">
</form>
<?php
$str=$_POST['str'];
eval("$o=$str;");
Echo   "$o";
?>
另外,用此函數必須特別小心!!
如果有人輸入format: d:會是什麼結果?

————————————————————-

PHP程式設計問題諮詢:
請問,為什麼單引號,雙引號在接受頁面變成('")?

———————————————————
PHP程式設計問題回覆:
為什麼單引號,雙引號在接受頁面變成('"),可以參考以下的說明:

———————————————————
解決方法:

方法一:在php.ini中設置:magic_quotes_gpc = Off


方法二: $str=stripcslashes($str)

———————————————————

如何用PHP網頁,取得目前Linux主機PHP版本?(phpversion)

如果你是租用虛擬主機,如何知道Linux主機PHP版本呢?
———————————————————-
方法如下:
先用網頁編輯軟體
例如:Dreamweaver 新增一個新的PHP動態空白網頁
切到程式碼
刪除全部字串,再貼入下面語法,存檔並上傳至主機網站下
在瀏覽器網址列輸入該PHP路徑,開啟該網頁
即可以看到該Linux主機PHP版本!

<?php

// prints e.g. ‘Current PHP version: 3.0rel-dev’

echo “Current PHP version: “.phpversion();

?>

———————————————————–
語法 : string phpversion (void)

說明 :

傳回現在所安裝的PHP的版本。

———————————————————–
參考 : phpinfo( ) phpcredits( ) php_logo_guid( )

 

從 PHP 4 移植到 PHP 5需要注意的事項

向後不相容的改變

儘管大部分 PHP 4 的代碼應該不用修改就能運行,還是應該留意以下向後不相容的改變:

    *

      有了一些新關鍵字。
    *

      strrpos() 和 strripos() 如今使用整個字串作為 needle。
    *

      非法使用字串偏移量會導致 E_ERROR 而不是 E_WARNING。一個非法使用的例子:$str = 'abc'; unset($str[0]);.
    *

      array_merge() 被改成只接受陣列。若果傳遞入非陣列變量,對每個此類參數都會發出一條 E_WARNING 訊息。要小心因為你的代碼有可能瘋狂發出 E_WARNING。
    *

      PATH_TRANSLATED 伺服器變量在 Apache2 SAPI 中不再暗中設定,這和 PHP 4 中的情形相反,若果 Apache 沒產生此值則其被設為和 SCRIPT_FILENAME 伺服器變量一樣的值。此修改是為了遵守 CGI 規範。更多訊息見 bug #23610,並參考手冊中 $_SERVER['PATH_TRANSLATED'] 的說明。此問題也影響到 PHP >= 4.3.2 的版本。
    *

      Tokenizer 增加不再定義 T_ML_COMMENT 常量。若果把 error_reporting 設為 E_ALL,PHP 將產生一條訊息。儘管 T_ML_COMMENT 從來都沒用到過,還是在 PHP 4 中定義了。在 PHP 4 和 PHP 5 中 // 和 /* */ 都被解析為 T_COMMENT 常量。但是 PHPDoc 風格的注解 /** */,自 PHP 5 開始被 PHP 解析,被識別為 T_DOC_COMMENT。
    *

      若果 variables_order 內含「S」,$_SERVER 應該帶有 argc 和 argv 被產生。若果會員特別配製系統不建立 $_SERVER,那此變量當然就不存在了。改變的地方是不管 variables_order 怎麼設定,在 CLI 版本中 argc 和 argv 總是可用的。本來 CLI 版不是總會產生全局變量 $argc 和 $argv 的。
    *

      沒有屬性的對象不再被當成「empty」。
    *

      有些情況下類必須在使用前被定義。這僅在使用了一些 PHP 5 的新特性的時候發生。其它情況下行為都沒變。
    *

      get_class(),get_parent_class() 和 get_class_methods() 如今返回的類/方法名和定義時的名字一致(區分大小寫),對於依賴以前行為(類/方法名總是返回小寫的)的老腳本可能產生問題。一個可能的解決方法是在腳本中搜尋所有這些函數並使用 strtolower()。

      區分大小寫的改變也適用於魔術常量 __CLASS__,__METHOD__ 和 __FUNCTION__。其值都會嚴格按照定義時的名字返回(區分大小寫)。
    *

      ip2long() 在傳遞入一個非法 IP 作為參數時返回 FALSE,不再是 -1。
    *

      若果在包括檔案中定義有函數,則不管在 return() 之前還是之後都可以在主檔案中呼叫。若果檔案被包括兩次,PHP 5 會發出致命錯誤,因為函數已經被定義,而 PHP 4 不管這個。因此推薦使用 include_once() 而不要去檢查檔案是否已被包括以及在包括檔案中有條件返回。
    *

      include_once() 和 require_once() 在 Windows 下先將路徑規格化,因此包括 A.php 和 a.php 只會把檔案包括一次。

例子 B-1. strrpos() 和 strripos() 如今用整個字串作為 needle
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>

例子 B-2. 沒有屬性的對象不再被當成「empty」
<?php
class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if ($t) {
    // Will be executed
}
?>

例子 B-3. 有些情況下類必須在使用之前定義
<?php

//works with no errors:
$a = new a();
class a {
}

//throws an error:
$a = new b();

interface c{
}
class b implements c {
}

?>

PHP【函式簡介】Require及Require_once( )
    require 的使用方法如 require("header.inc"); 。
這個語法通常放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 PHP 程式網頁的一部份。
常用的函式可以寫成一個函式庫檔案,然後用這個方法將它引入網頁中。

require_once 的作用和 require 是幾乎相同的,唯一的差別在於 require_once 會先檢查要引入的檔案是不是已經在該程式中的其他地方被引入過了。
如果有的話,就不會再次重複引入該檔案。
這項功能有時候是很重要的,比方說要引入的檔案裡面宣告了一些我們自行定義的函數,那麼如果在同一個程式重複引入這個檔案,在第二次引入的時候便會發生錯誤訊息,因為 PHP 不允許相同名稱的函數被重複宣告。

用單引號代替雙引號來包括字串 ,這樣做會更快一些。

因為PHP會在雙引號包圍的字串中搜尋變量,單引號則不會,注意:只有echo能這麼做,它是一種可以把多個字串當作參數的「函 數」(譯註:PHP手冊中說echo是語系結構,不是真正的函數,故把函數加上了雙引號)。

1、如果能將類的方法定義成static,就盡量定義成static ,它的速度會提升將近4倍。

2、$row[』id』] 的速度是$row[id]的7倍。

3、echo 比 print 快 ,並且使用echo的多重參數(譯註:指用逗號而不是句點)代替字串連線,比如echo $str1,$str2。

4、最好使用Foreach執行迴圈 ,在執行for迴圈之前確定最大迴圈數,不要每迴圈一次都計算最大值。

5、註銷那些不用的變量尤其是大陣列 ,以便釋放記憶體。

6、盡量避免使用__get,__set,__autoload 。對於__開頭的函數就命名為魔術函數,此類函數都在特定的條件下廚房的。總得來說,有下面幾個魔術函數

__construct(),__destruct(),__get(),__set(),__unset(),__call(),__callStatic(),__sleep(),__wakeup(),__toString(),__set_state(),__clone(),__autoload()

7、require_once()代價昂貴 。

8、include檔案時盡量使用絕對路徑 ,因為它避免了PHP去include_path裡尋找檔案的速度,解析操作系統路徑所需的時間會更少。

9、如果你想知道腳本開始執行(譯註:即伺服器端收到用戶端請求)的時刻,使用$_SERVER[『REQUEST_TIME』]要好於 time()。

10、函數代替正則表達式完成相同功能 。

11、str_replace函數比preg_replace函數 快,但strtr函數的效率是str_replace函數的四倍。

12、如果一個字串置換函數,可接受陣列或字元作為參數,並且參數長度不太長,那麼可以考慮額外寫一段置換代碼,使得每次傳遞參數是一個字元,而 不是只寫一行代碼接受陣列作為查詢和置換的參數。

13、使用選取分支語句代替條件語句 ,選取分支語句(即switch case)好於使用多個if,else if語句。

14、不用@ ,用@屏蔽錯誤訊息的做法非常低效,極其低效。

15、開啟apache的mod_deflate模組,可以提高網頁 的瀏覽速度 。

16、資料庫連線當使用完畢時應關掉,不要用長連線 。

17、錯誤訊息代價昂貴 。

18、在方法中遞增局部變量,速度是最快的 。幾乎與在函數中呼叫局部變量的速度相當。

19、遞增一個全局變量要比遞增一個局部變量慢2倍 。

20、遞增一個對像屬性(如:$this->prop++)要比遞增一個局部變量慢3倍。

21、遞增一個未預定義的局部變量要比遞增一個預定義的局部變量慢9至10倍。

22、僅定義一個局部變量而沒在函數中呼叫它,同樣會減慢速度(其程度相當於遞增一個局部變量)。PHP大概會檢檢視是否存在全局變量。

23、方法呼叫看來與類中定義的方法的數量無關,因為我(在測試方法之前和之後都)加入了10個方法,但效能上沒有變化。

24、派生類中的方法運行起來要快於在基類中定義的同樣的方法。

25、呼叫帶有一個參數的空函數,其花費的時間相當於執行7至8次的局部變量遞增操作。類似的方法呼叫所花費的時間接近於15次的局部變量遞增操 作。

26、Apache解析一個PHP腳本的時間要比解析一個靜態HTML頁面慢2至10倍。盡量多用靜態HTML頁面,少用腳本。

27、除非腳本可以快取,否則每次呼叫時都會重新編譯一次。引入一套PHP快取機制通常可以提升25%至100%的效能,以免除編譯開銷。

28、盡量做快取,可使用memcached。memcached是一款高效能的記憶體對像快取系統,可用來加速動態Web應用程式,減輕資料庫負 載。對操作碼 (OP code)的快取很有用,使得腳本不必為每個請求做重新編譯。

29、當操作字串並需要檢驗其長度是否滿足某種要求時,你想當然地會使用strlen()函數。此函數執行起來相當快,因為它不做任何計算,只返 回在zval 結構(C的內建資料結構,用於存儲PHP變量)中存儲的已知字串長度。但是,由於strlen()是函數,多多少少會有些慢,因為函數呼叫會經由諸多步 驟,如字母小寫化(譯註:指函數名小寫化,PHP不區分函數名大小寫)、哈希尋找,會跟隨被呼叫的函數一起執行。在某些情況下,你可以使用isset() 技巧加速執行你的代碼。

(舉例如下)

if (strlen($foo) < 5) { echo 「Foo is too short」$$ }
(與下面的技巧做比較)
if (!isset($foo{5})) { echo 「Foo is too short」$$ }

呼叫isset()恰巧比strlen()快,因為與後者不同的是,isset()作為一種語系結構,意味著它的執行不需要函數尋找和字母小寫化。 也就是說,實際上在檢驗字串長度的頂層代碼中你沒有花太多開銷。

34、當執行變量$i的遞增或遞減時,$i++會比++$i慢一些。這種差異是PHP特有的,並不適用於其他語系,所以請不要修改你的C或Java 代碼並指望它們能立即變快,沒用的。++$i更快是因為它只需要3條指令(opcodes),$i++則需要4條指令。後置遞增實際上會產生一個臨時變 量,這個臨時變量隨後被遞增。而前置遞增直接在原值上遞增。這是最改善處理的一種,正如Zend的PHP改善器所作的那樣。牢記這個改善處理不失為一個好 主意,因為並不是所有的指令改善器都會做同樣的改善處理,並且存在大量沒有裝配指令改善器的際網路服務提供商(ISPs)和伺服器。

35、並不是事必面向對像(OOP),面向對像往往開銷很大,每個方法和對像呼叫都會消耗很多記憶體。

36、並非要用類實現所有的資料結構,陣列也很有用。

37、不要把方法細分得過多,仔細想想你真正打算重用的是哪些代碼?

38、當你需要時,你總能把代碼分解成方法。

39、盡量採用大量的PHP內建函