首頁  >  文章  >  後端開發  >  遞歸 - php的成員方法中可以寫自訂函數麼?

遞歸 - php的成員方法中可以寫自訂函數麼?

WBOY
WBOY原創
2016-09-06 08:57:10963瀏覽

php的成員方法中可以寫自訂函數麼?
我在一個方法中定義了函數,但是呼叫的時候報錯
這是那個報錯的方法
遞歸 - php的成員方法中可以寫自訂函數麼?
報錯如下

遞歸 - php的成員方法中可以寫自訂函數麼?

但是我還有另一個方法中同樣寫了函數並進行遞歸,可是沒有報錯。

遞歸 - php的成員方法中可以寫自訂函數麼?

這是呼叫這兩個方法的介面

遞歸 - php的成員方法中可以寫自訂函數麼?

為什麼會報錯?誰能給講解一下,或是有好的處理方法也行

回覆內容:

php的成員方法中可以寫自訂函數麼?
我在一個方法中定義了函數,但是呼叫的時候報錯
這是那個報錯的方法
遞歸 - php的成員方法中可以寫自訂函數麼?
報錯如下

遞歸 - php的成員方法中可以寫自訂函數麼?

但是我還有另一個方法中同樣寫了函數並進行遞歸,可是沒有報錯。

遞歸 - php的成員方法中可以寫自訂函數麼?

這是呼叫這兩個方法的介面

遞歸 - php的成員方法中可以寫自訂函數麼?

為什麼會報錯?誰能給講解一下,或是有好的處理方法也行

為什麼不把你的自訂函數 寫成類別裡面的成員方法呢?

謝邀,可以自訂,你這裡報錯是因為你在其他地方也定義了getTree函數,錯誤是說你重複定義了。

另外還有一個更好的選擇PHP閉包,大概如下:

<code>class Test{
    public function index(){

        $hello_closures = function ($str){
            echo $str;
        };

        $hello_closures("hello , php closures function");
    }
}</code>

官方文件看這裡,很容易懂:http://php.net/manual/zh/func...

報錯資訊已經很明顯了,不能重複定義getTree函數,你已經在LabelController中定義過了

php 裡面的函數(不是類別的方法)都是全域的,也就是說,無論你是在全域定義的,或是在函數中定義的函數,都被認為是全域的(這點和js不一樣,不要混淆)。

php 不支援函數重載(就是不能重名),所以,不允許重複宣告函數(說到重載,倒是在類別裡面可以實現,只是意義完全不同,感覺就像錯誤處理函數一樣,只是用來友善展示的,個人覺得,沒什麼卵用)。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn