2012-11-06 27 views
2

我有一個類與自己的方法,另一方面的PHP文件包含外部方法。從文檔中可以明顯看出,在包含外部函數的類中是不可能的包括從一個類的外部php文件的方法

我怎麼可以在我的班級中使用這個函數。創建另一個班級並延長我的第一堂課不能成爲一個選擇。

+0

在你想要包含的文件中......這些實際的方法在一個類上還是這些自由浮動函數? – prodigitalson

+0

他們是自由浮動功能 – kakuki

+2

不要。類的要點是封裝功能並阻止您將相關代碼傳播到多個文件。 – vascowhite

回答

3

您可以從一個類調用外部函數,即使他們沒有在自己的類封閉:

Global.php

<?php 
function doSomething() { 
    return 'Hello'; 
} 
?> 

ExampleClass.php

<?php 
include_once('Global.php'); 

class ExampleClass 
{ 
    public function example() { 
     return doSomething(); 
    } 
} 
?> 

儘管實際的類文件中可能沒有include

+0

這對我來說太神奇了。但它有點不錯,因爲你仍然必須爲每個函數聲明包裝器(或者更糟糕的是,使用'__call()')。 –

+0

這不是神奇的,它被稱爲代表團。從OP問題是否打算簡單地調用外部函數來執行某項任務或包裝每個函數來掩飾它作爲班級的一部分 - 我認爲您假設後者,這很可能是真實的,你不需要使用'__call()'而且沒有魔法 - 它只是調用一個函數。 – Fenton

+0

在我的情況下它的工作被接受 – kakuki

5

你不行。所有的類定義,包括方法和字段必須在同一個文件中。你不能在兩個不同的文件中聲明同一個類。

擴展或使用traits(如果您有PHP 5.4.x +),是您唯一的選擇。