簡體   English   中英

PHP-在另一個類中調用函數->函數

[英]PHP - Calling function inside another class -> function

我正在嘗試這樣做:

class database {    
function editProvider($post)
{   
    $sql = "UPDATE tbl SET ";
        foreach($post as $key => $val):
            if($key != "providerId")
            {
                $val = formValidate($val);
                $sqlE[] = "`$key`='$val'"; 
            }
        endforeach;

    $sqlE = implode(",", $sqlE);

    $where = ' WHERE `id` = \''.$post['id'].'\'';
    $sql = $sql . $sqlE . $where;

    $query = mysql_query($sql);

    if($query){
        return true;
    }
}
//
}//end class

然后使用此函數*另一個類的INSIDE *

function formValidate($string){
  $string = trim($string);
  $string = mysql_real_escape_string($string);
  return $string;
}
//

..在$ val。 為什么不起作用? 如果我在表單的字段中編寫,則根本不會轉義任何內容。 怎么可能?

*更新* handler.php:

if(isset($_GET['do'])){

if($_GET['do'] == "addLogin")
{
    $addLogin = $db->addLogin($_POST);
}

if($_GET['do'] == "addProvider")
{
    $addProvider = $db->addProvider($_POST);
}

if($_GET['do'] == "editProfile")
{
    $editProfile = $db->editProfile($_POST);
}

if($_GET['do'] == "editProvider")
{
    $editProvider = $db->editProvider($_POST);
}
}
//end if isset get do

** editProvider函數可以正常工作,除了:-) **

您需要實例化該驗證類,而不是實例化一次,您將需要使用您的value參數在該類中調用該函數。

在您的editProvider中,您可以擁有:

$validator = new validate();
$val = $validator->formValidate($val);

如果上述方法不起作用,請嘗試以下方法:

$val = mysql_real_escape_string(trim($val));

並查看其是否有效,是否與未調用正確的函數有關。

不知道為什么您如此熱衷於使用$ this與靜態實現。 IMO,靜態調用使此代碼更容易。 如果您確實想從數據庫類訪問$this->formValidatString() ,則必須進行class database extends MyOtherClass

這是進行靜態調用的簡單程度:

class database {

    public function editProvider($post)
    {   
        $sql = "UPDATE tbl SET ";
        foreach($post as $key => $val):
            if($key != "providerId")
            {
                $val = MyOtherClass::formValidate($val);
                $sqlE[] = "`$key`='$val'"; 
            }
        endforeach;

        $sqlE = implode(",", $sqlE);

        $where = ' WHERE `id` = \''.$post['id'].'\'';
        $sql = $sql . $sqlE . $where;

        $query = mysql_query($sql);

        if($query){
            return true;
        }
    }        
}//end class

class MyOtherClass
{
    public static function formValidate($string) {

        if (strlen($string) < 1) {
            throw new Exception('Invalid $string ' . $string . ');
        }

        $string = trim($string);
        $string = mysql_real_escape_string($string);

        return $string;
    }
}

為此,您不需要實例。 只需執行validate::formValidate($val);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM