[英]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.