請問一下 這兩個的差別在哪 [論壇 - 新手村]
正在瀏覽:
1 名遊客
訪客
|
請問一下 這兩個的差別在哪 |
|
---|---|---|
Anon:訪客
|
[code]
<?php //1 class test { public static function run() { print "Works\n"; } } //2 function run() { print "Works\n"; } ?> [code] 請問一下 1號 根 2 號差在哪邊阿? 1號的公用是什麼阿? http://php.net/manual/en/language.oop5.php 我看的頭昏眼花的...
2011/6/13 19:35
| 129e3 b6fba 332db 442a5
|
|
![]() |
訪客
|
回覆: 請問一下 這兩個的差別在哪 |
|
---|---|---|
Anon:訪客
|
第1種: 是「物件導向」的寫法,那是一個 class 類別,需要 PHP5 以上才支援。
第2種: 是一般函式的寫法,是一個 function。PHP4 就可以執行。 「物件導向」會讓開發大型程式更簡易,class 可以"繼承",function 不行。但物件導向觀念比較複雜,學習較不易。 實際上樓主這兩段例子,都無法直接執行,還需要去實體化物件,和呼叫函數,才能執行。 使用方法:
表面上看來,物件導向好像多了幾個步驟,還要先實體化,又呼叫方法的。不過這是因為這個範例太簡單。 如果比較複雜的程式,就能體現出物件導向的好處。礙於篇幅,不想講了,請自行買書來看.... ------------------------------------------ 題外話1: 另外,上例是 class 和 實體化 new 寫在同一個 .php,若不是這樣,而是 class 自己寫一個 .class 檔,那麼還需要 require_once,把 class 導進去 .php 才能用。 這是 PHP5 物件導向比較麻煩的地方,因為 PHP5 的物件導向還不成熟...只是試做階段,而且 PHP5 只是初步支援物件導向,但它本身並無任何內建的官方 class 可用。聽說 PHP6 才會強化帶來真正的物件導向。 一般大量 class 的情況,會乾脆寫個 __autoLoad,就能直接實體化 class 了。 classAutoload.func.php
↑ 相對路徑 /include/class/ 可能要修改一下才能用。 如此一來,每個 .php原始碼檔 只要先在前面 require_once classAutoload.func.php 就能用到所有自己寫的 class 了 而這也就是為什麼加速文件會說 class 導致速度比較慢的原因(詳後述)... ------------------------------------------------ 題外話2: 有一些 PHP 加速文件指出:採用全物件導向的寫法,會讓 PHP 效能較差,如不是真的非需要物件導向不可,用一般 funtion 可以加速。 但我個人不認同這種加速說法。單純的 funtion 在直譯上雖然比較快,但損失的是開發效率和大型專案的維護性。 包括加速文件列一大堆例子: 比如:echo AAA . BBB 如改寫成 echo AAA , BBB,速度會更快 就是用 echo 的參數 , (逗號)來取代 . (字串連接號) 效果一樣,說這樣可以加速.... 或許能加速吧,但也就節省幾 ms 毫秒時間 然而改成這種的,其它人看得懂嗎? 這就損失了程式維護性 所以我個人不認同這種加速想法...這有點像是鑽牛角尖 「物件導向」比較讚啦 若對物件導向有興趣,先去摸摸 JAVA 會有很大幫助,JAVA 是全物件導向的語言,觀念較完整清晰。
2011/6/13 21:06
| b16be d83ac a0ef6 afa60
|
|
![]() |
回覆: 請問一下 這兩個的差別在哪 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2008/10/7 21:19 所屬群組:
已註冊使用者 等級: 36
HP : 0 / 896
![]() |
現在最新的是PHP6,好像有更加完善物件導向的特性
2011/6/13 21:25
|
||||||||||
I′m UGP
|
|||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.