【问题标题】:PHP call method from class in other class其他类中的类的PHP调用方法
【发布时间】:2012-11-05 06:42:28
【问题描述】:

代码示例:

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

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

【问题讨论】:

  • 就像您昨天的问题一样,$val 将不在public function login() 的范围内。您需要在函数内部定义$val,或者作为类属性并通过函数中的$this-&gt;val 访问。

标签: php class methods call


【解决方案1】:

你不能在这样的类中使用包含!要么将它包含在文件的开头(我的建议),要么在$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;
        }
    }
?>

【讨论】:

  • $val = new validation()上发现缺少的分号的奖励积分
  • 我以前试过这个,但没有用。又试了一次,成功了。猜猜我之前做错了什么。谢谢!
【解决方案2】:

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

选项 1

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

}

选项 2

namespace ThisCoolThing;
use \OtherCoolThing\validation;

class database { ... }

【讨论】:

    【解决方案3】:

    您需要将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
    }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多