【问题标题】:Abstraction class recognition抽象类识别
【发布时间】:2013-09-12 23:24:04
【问题描述】:

我在哪里放置包含才能正确注册?我尝试在 ATE 中同时包含命令库和关闭,并且我尝试在 ATE 中仅包含命令库,在命令库中包含关闭...无论我做什么,它都会显示未找到关闭。

class.CommandBase.php

  <?php
      abstract class CommandBase {
      // variables
      // abstract functions
      // protected function
     }
  ?>

class.Close.php

<?php
 class Close extends CommandBase
 {
    // variables

    // functions

    // public function __construct
 }
?>

class.ATE.php

<?php
class ATE {
    // instance variables

    // public properties

    public function start(){
            $command = new Close();         // class 'Close' not found
    }
    // public function __construct
 }
?>

【问题讨论】:

    标签: php abstraction


    【解决方案1】:

    我尝试在 ATE 中同时包含命令库和关闭

    这应该可以工作,前提是“命令库”包含之前“关闭”。

    include ('class.CommandBase.php');
    include ('class.Close.php');
    

    我尝试在 ATE 中仅包含命令库,并在其中关闭 指挥基地

    “命令库”中的“关闭”将不起作用,因为“关闭”扩展“命令库”。

    理想情况下,我会避免在其他类文件中包含类文件,并将我的包含语句限制在使用这些类的任何脚本中。

    【讨论】:

    • 它正在工作。出于某种原因,我将底座放在了包含的底部。死棋。谢谢。
    【解决方案2】:

    Class Close 需要包含 Class CommandBase。 ATE 类需要包含 Close

    class.Close.php

    include 'class.CommandBase.php';
    

    class.ATE.php

    include 'class.Close.php';
    

    请注意,如果所有文件都在同一目录中,这将照常工作。如果它们不在同一个目录中,则需要更新它以指向正确的位置。

    您还应该查看 PHP 的自动加载类的方法。很大的帮助!

    http://php.net/manual/en/language.oop5.autoload.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-07
      • 2011-04-12
      • 2015-09-26
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多