2017-08-13 115 views
-1

這是可能的在PHP?我有點新鮮和學習。功能裏面的函數裏面的函數,調用未定義的函數

//file name: functions.php: 
<?php 
function addItem(){ 
...does something 
// calls for another function in the same functions.php file 
randomNumber(); 
} 

function randomNumber(){ 
//generates random number 
} 

////////////////////////////////////// 
file name: worker.php 
<?php 
//calls for addItem() function 
addItem(); 
... 

function addItem(){ 
//calls for randomNumber() function 
.... 
$itemId = randomNumber(); 
..... 
} 

,所以我不斷收到錯誤:調用未定義功能randomNumber() 因爲我不包括在該的addItem functions.php文件()函數, 但是,如果我有它,我一直在歌廳無法重新聲明firstFunctionOnFunctionsFile()我已經聲明它。

有什麼想法?

在此先感謝。

+0

更改檢查文件是否已經被包含,如果是這樣,不包括(要求),它的名字 – user2182349

回答

0

您正在調用未定義的函數。

//file name: functions.php: 
<?php 

function randomNumber(){ 
//generates random number 
} 


function addItem(){ 
// calls for another function in the same functions.php file but set before 
randomNumber(); 
} 

不同的需要,包括被包括不返回任何錯誤,將停止腳本,如果需要的文件不存在運行之間:既然你調用該函數在randomNumber功能應該是之前的addItem。此外,require_once將再次

//file name: worker.php 
<?php 
require_once 'functions.php'; 
//generating new items and set return in a value 
$newitem = addItem(); 
1

看看include_oncerequire_once的文檔,它們允許您僅包含一次文件,而不管您調用這些函數的次數多少次,這樣可以防止出現錯誤。

另外想想你是什麼時候和在哪裏做你的包括。將文件包含在函數體中真的有意義嗎?如果你有一個functions.php文件,它包含了你的worker.php文件中需要的許多函數,只需將它包含在worker.php的頭部,這樣你就不用擔心後面的代碼了。這也使得更容易一目瞭然地查看包含哪些不同的文件。

+0

感謝我沒有嘗試使用include_once包括功能的答覆。 PHP但我keept geting相同無法重新聲明函數。 functions.php包含在worker.php文件中如果我不在函數中包含函數文件,它不會看到函數。我不認爲PHP可以看到函數外的包含函數 –