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

クラスデータベースでクラス検証を委任するにはどうすればよいですか? クラス検証を継承 (実装または拡張) したくありません -> 検証の動作は変更されません。検証クラスのメソッドを使用したいだけです。OOP ソリューションはありますか? 前もって感謝します

4

3 に答える 3

2

そのようなクラス内で include を使用することはできません! ファイルの先頭に含めるか(私の提案)、$val = new validation();呼び出しの1行前に使用してください。

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;
        }
    }
?>
于 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 に答える