回複內容:
load 預設參數
$params += array(
'p1' => xx,
'p2' => xx
)
$handle = popen("tail -f /var/log/nginx/access.log 2>&1", 'r'); while(!feof($handle)) { $buffer = fgets($handle); echo "$buffer\n"; flush();}pclose($handle);
一看都變成了講解如何進行php的最佳化了,我也說點。
1.單引號實現字串的效能最佳化
這個我覺得沒有必要。php不會因為這點小的效能消耗就被壓垮了。而且也會出現一些其他的問題。我舉個例子
$str = "you're";
$data = "I heard that {$str} getting married";
?>
我覺得這個時候,還是使用雙引號更好一些。因為你字串拼接的問題,還要php再次申請開啟記憶體空間。同時還能避免出現一些奇葩問題。比如我們之前出現的這個問題。
$str = "you're";
$sql = "update article set content = '{$str}' where id = 1";
echo $sql; //update article set content = 'you're' where id = 1
?>
比如出現了這種情況。就會特別痛苦。 這是慘痛的教訓。我還是還在補坑中。
2.儘可能的使用PHP函數,換一句話說意思就是盡量的減少程式碼數,這樣的一個好處就是說減少代碼出現bug的量。
3. require_once 和 require 其實消耗差不多,那一點的差距真的不算大。等你寫的檔案需要這邊載入那邊載入,然後發現一不小心重複載入了一個類,然後造成衝突了。你就知道了require_once的好處了。
4.盡量不要隨便的進行複製變數 因為這樣php需要另外去開闢空間,這樣的也話會耗費一些時間。雖然這些時間很少,但是我感覺這種完全可以避免掉。
5.在echo一個東西的時候盡量使用分號而不是點文法。我的解釋是這樣的,當用點文法的時候,php需要記性開闢更多的空間來儲存這個變數,然後統一進行輸出。而使用逗號的話,則使用了多次echo行為。這樣的話。只是分為兩次將變數輸入到緩衝區。相對來說,點文法快了一點點。。。。但是這些都是一點點的效能損耗。
6.在php7之前的foreach其實是複製出一個副本出來,然後進行迴圈的。這個時候我還是建議使用array_map(), array_walk(), array_filter()等函數來處理你的問題。
7.$dir = dirname(dirname(dirname(__file__))); 這個的最佳化方法我給寫的是:$dir = realpath(__DIR__ . '/../../'); 最後要確定的目錄一定要存在,否則會返回false
8.一定要明白 == 和 === 的區別
9.不要使用__autoload 使用spl_autoload_register來代替。具體使用方法可以查詢該函數
10.不要隨便相信網上的那些php最佳化50則之類的東西。因為裡面的有些東西可能是錯的。在沒有驗證正確性的時候,不要隨便轉寄給別人。現在網上的資料已經夠亂的了。希望大家在確定真實性之後再去傳播。
曾經寫過的代碼,有類似經曆的來站隊
就在剛才的空間裡看到這個圖片。那我估計就是一個符號
@非瞠目結舌,只是一點小技巧
- foreach效率更高,盡量用foreach代替while和for迴圈。
- 迴圈內部不要聲明變數,尤其是對象這樣的變數。
- 迴圈裡別用函數
for($x=0; $x < count($array); $x)//count()函數在外面先計算
告訴各位找嗔目結舌X的方法,去Stackoverflow
Highest Voted 'php' Questions
有多嗔目結舌我不知道,但我肯定你能學到很多東西,不要繼續在這種問題上浪費生命。1、autoload
spl_autoload_register(function($classname)
{
require_once("{$classname}.php")
});
2、php也有閉包
3、trait 就像個萃取器(我用過幾次)
trait SayWorld
{
public function sayHello()
{
echo 'World!';
}
}
class MyHelloWorld
{
// 將SayWorld中的成員包含進來
use SayWorld;
}
$xxoo = new MyHelloWorld();
// sayHello() 函數是來自 SayWorld 構件的
$xxoo->sayHello();
4、php也有yield關鍵字
function number10()
{
for($i = 1; $i yield $i;
}
返回數組1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
5、飛船運算子Orz.. php7
就是類似windows api傳回值的三元邏輯。
$a $b;
6、定界符
$name = 'kitty';
echo
{$name}
Eof;
?>
(注:一些內容來自網路)大概就是那些利用反射玩出來的花樣吧,不過不建議寫沒有詳細文檔說明的反射,後來的人會看不懂的
PHP: Variable variables
PHP: Magic Methods
PHP: spl_autoload
-