2012-11-16 31 views
1

代碼示例;如何從網頁功能從php類中調用函數

PHP網頁(的index.php)

<html><head></head> 
    <body> 
    <?php 
    include("class_validation.php"); 
    $val = new validation(); 

     if(isset($_POST['action'])) doSomething(); 

    function doSomething() { 
     $val->validate(); //I AM UNABLE TO DO THIS! 
    } 
    ?> 
    </body> 
    </html> 

PHP文件:(class_validation.php)

<?php 
class validation() 
{ 
    function validate(){ 
     //some validation 
    } 
} 
?> 

問題:如何可以調用一個函數從 'class_validation.php'我在我的PHP網頁中創建的函數中的文件?我可以正確地調用函數doSomething()以及調用函數$ val-> validate();當不在另一個功能。我有辦法做到這一點?

回答

3

$val超出了那個doSomething()函數調用的範圍。將它作爲參數傳遞給函數:

// Define the function to accept a parameter. Use a type hint to be sure it is 
// a validation object 
function doSomething(validation $val) { 
    $val->validate(); 
} 

if(isset($_POST['action'])) doSomething($val); 

PHP documentation on type hinting

另外,和不建議,您可以使用關鍵字global在函數內部引用全球$val

function doSomething() { 
    // Don't do it this way. The func parameter is preferred 
    global $val; 
    $val->validate(); 
} 
+0

工程就像一個魅力,tyvm! – user1178560

0

你似乎在尋找封閉的支持,這是僅適用於anonymous functions

而根據你的代碼示例,它似乎不是一個正確的用例。也許你應該只是傳遞這個值作爲函數參數?