PHP调用其他类中的类的方法

时间:2012-11-16 14:12:31

标签: php class methods call

代码示例:

<?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解决方案? 提前致谢

3 个答案:

答案 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 { ... }