2010-02-20 64 views
7

我创建了一个名为formChecker.php的PHP类。它验证一个表单。作为Java程序员,我想坚持在另一个类中创建此类的实例并从此运行它的想法。它似乎并没有为我工作。以下是一个演示:创建一个PHP类 - >在另一个类中创建它的一个对象

class formChecker{ 

    ..... validation functions go here 

} 

class runFormChecker{ 

.... create instance of formchecker here and use it's methods etc. 

} 

可以这样做吗?我在想的是开发一些可以单独运行的类。

GF

+4

+1:欢迎StackOverflow的:) – Sarfraz 2010-02-20 21:15:33

+0

在PHP中,这也是惯例在命名类的大写首字母。 – 2010-02-20 23:05:55

回答

8

我宁愿将formChecker的实例(或实现某个接口的东西)传递给runFormChecker的实例。看到http://en.wikipedia.org/wiki/Dependency_injection

可能是那样简单

interface FormChecker { 
    public function foo($x); 
} 

class MyFormChecker implements FormChecker 
    public function foo($x) { 
    return true; 
    } 
} 

class RunFormChecker { 
    protected $formChecker=null; 
    public function __construct(FormChecker $fc) { 
    $this->formChecker = $fc; 
    } 

    // .... 
} 

$rfc = new RunFormChecker(new MyFormChecker); 
+0

是的。这对我来说是更好的选择。与我习惯的相似,谢谢。 – user277813 2010-02-21 22:18:55

0

是的,这并不奇怪。但通常在runFormChecker的实例中创建formChecker的实例,但不是在课程级别。

8

就包括formChecker类文件要在如使用它只是在上课前:

include "formChecker.php" 

class runFormChecker{ 

    function __construct() { 
     $obj = new formChecker; // create instance 
     // more processing............ 
    } 
} 

但是,如果你在一个文件中这两个类(这是坏的),则没有必要包括该文件,你可以创建马上例如实例:

class formChecker{ 
    // ............ 
} 

class runFormChecker{ 

    function __construct() { 
     $obj = new formChecker; // create instance 
     // more processing............ 
    } 
} 

More Information Here....

谢谢:)

+0

“包含”文件也不坏吗?这与两个类都在一个文件中是不是一回事? – user277813 2010-02-21 22:22:00

+1

@ grungefreak1:这是怎么回事?如果您将类放在自己的文件中并将它们包含在另一个文件中,它们将再次成为一个文件,但只在运行脚本中但在应用程序之外,它们仍保留在它们自己的文件中,从而更容易维护它们。 – Sarfraz 2010-02-22 01:13:29

+0

采取了点。但是,我会继续将一个对象传递给另一个对象的构造函数,因为它更符合我的OOP思想.GF – user277813 2010-02-22 22:15:14

相关问题