2012-10-20 79 views
0

我可以在我的課程中使用它作爲方法名嗎?可以將「define」(一個內置函數的名稱)用作方法名嗎?

這似乎是一個功能:http://www.php.net/manual/en/ref.misc.php 但我看到有列出了一些語言構造太像dieexit

+0

「內置函數」和「保留字」之間有區別。有時它們是重合的。當然,這可以用更少的時間來測試,然後寫這篇文章.. – 2012-10-20 20:04:53

+0

是的,我知道它的工作原理。我想知道是否使用它是一個好主意(好習慣bla bla)。我知道它不適用於語言結構(如「界面」,也可以) – thelolcat

+0

「定義」本身的聲音不夠充分描述。比較'$ x-> define(..)'和'$ x-> defineTemplate(..)'。但這是一個風格問題,與「它會編譯」的問題是分開的 - 我給出了-1,因爲「它會編譯」的問題是可以進行細微測試的問題。測試它。然後,如果需要,使用這種知識寫一個更好的基本問題。 – 2012-10-20 20:07:15

回答

2

當你...你可以,當你不能......你會知道:)

見的保留字列表這裏http://php.net/manual/en/reserved.php和避免它們。任何良好的PHP IDE都會在您嘗試非法命名您的方法時提醒您。

還有另一個問題。如果您忘記了$ this->方法()並且您只是在您的類中使用方法(),它將按其定義的函數工作。這會導致怪胎和難以發現的錯誤。

2
<?php 

class Test { 
    function defined() { 
    return "Yes you can"; 
    } 
} 

$x = new Test(); 
echo $x->defined(); 

是的,你可以。不,你不應該。使用與內置函數相同的名稱永遠不是一個好主意。單詞defined在PHP中具有確定的含義,沒有人應該更加認真思考如何在某些特定上下文中瞭解您的課程是如何使用(或濫用)該單詞的。

+0

我同意 - 但不是因爲名稱重用;而是因爲,至少在有限的情況下,這個名字似乎並沒有傳達足夠的信息。 (然而,考慮一個特殊的「動態變量」類型,它只會偶爾被「定義」:然後歸結爲'defined'和'isDefined'或類似的。) – 2012-10-20 20:22:41

相關問題