代码示例:
<?php // class_database.php
class database
{
include("class_validation.php"); //this does not work
$val = new validation() //this does not work
public function login($value)
{
if($val->validate($value))
{
//do something
}
}
}
<?php // class_validation.php
class validation
{
public function validate($value)
{
if($value > 50) return true;
return false;
}
}
如何在类数据库中委派类验证? 我不希望继承(实现或扩展)类验证 - &gt;验证中的行为不得更改。 我只想使用验证类中的方法。任何OOP解决方案? 提前致谢
答案 0 :(得分:2)
你不能在类这样的类中使用include!要么将其包含在文件的开头(我的建议),要么在$val = new validation();
调用之前使用它一行。
class_database.php:
<?php
include("class_validation.php");
class database
{
public function login($value)
{
$val = new validation();
if($val->validate($value))
{
//do something
}
}
}
?>
class_validation.php:
<?php
class validation
{
public function validate($value)
{
if($value > 50)
return true;
return false;
}
}
?>
答案 1 :(得分:0)
您需要将include
移到课堂外。 PHP不允许类中的类。
尝试这样的事情:
代码示例:
<?php
include("class_validation.php"); // include outside the class declaration
// class_database.php
class database
{
$val = new validation()
public function login($value)
{
if($val->validate($value))
{
//do something
}
}
}
答案 2 :(得分:0)
您可以将include()
放在课堂外(位于页面顶部,class_database.php),或者如果您使用框架/自动加载器,则可以通过命名空间调用它:
选项1
<?php
include('class_validation.php');
class database {
}
选项2
namespace ThisCoolThing;
use \OtherCoolThing\validation;
class database { ... }