0

代码示例:

<?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;
    }
}

如何委派类数据库中的类验证?我不希望继承(实现或扩展)类验证-> 验证中的行为不会改变。我只想使用验证类中的方法。任何面向对象的解决方案?提前致谢

4

3 回答 3

2

你不能在这样的类中使用包含!$val = new validation();要么将它包含在文件的开头(我的建议),要么在调用前使用它一行。

类数据库.php:

<?php
    include("class_validation.php");

    class database
    {
        public function login($value)
        {
            $val = new validation();
            if($val->validate($value))
            {
                //do something
            }
        }
    }
?>

  类验证.php:

<?php
    class validation
    {
        public function validate($value)
        {
            if($value > 50)
                return true;

            return false;
        }
    }
?>
于 2012-11-16T14:17:52.617 回答
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
}
    }
}
于 2012-11-16T14:16:03.953 回答
0

您可以将include()类放在外部(在页面顶部,class_database.php),或者如果您使用框架/自动加载器,您可以通过命名空间调用它:

选项1

<?php
include('class_validation.php');
class database {

}

选项 2

namespace ThisCoolThing;
use \OtherCoolThing\validation;

class database { ... }
于 2012-11-16T14:16:29.833 回答