像这样使用index.php中的函数->;publicF->;f()

像这样使用index.php中的函数->;publicF->;f(),php,function,class,Php,Function,Class,大家假设我们有这样一个类:我想做的就是使用一个特定的函数来做一些事情,把它当作一个按钮,但在某种程度上,你有一个公共函数,你可以执行它的一部分 CLASS DATA { public function X() { function A() { //do_something } } } 现在我在index.php中,我只想调用函数A()。 我尝试了$data->X()->A(),但什么都没有 我试过

大家假设我们有这样一个类:我想做的就是使用一个特定的函数来做一些事情,把它当作一个按钮,但在某种程度上,你有一个公共函数,你可以执行它的一部分

CLASS DATA {
      public function X() {
           function A() { 
              //do_something
           }
      }
}
现在我在index.php中,我只想调用函数A()。 我尝试了
$data->X()->A()
,但什么都没有 我试过
$data->X(A())
也没试过


有可能吗?

以您编写的方式,没有。在我看来,您正在尝试以Javascript应用程序的方式构建一些东西。但就像Rizier123指出的那样,你可以这样做

class Foo {
    public function getBar(){
        return new Bar();
    }
}

class Bar {
    public function someFunction() {

    }
}


$foo = new Foo();

$foo->getBar()->someFunction();
虽然我不能完全确定为什么要以这种方式嵌套东西,但继承是一种更好的方法。大概是这样的:

class Foo extends Bar {

}

class Bar {
    public function someFunction() {

    }
}


$foo = new Foo();

$foo->someFunction();
但是我想你可以使用前者作为一种在一致的庄园中传递特定构造函数参数的方法

class Foo {
    public function getRainbow(){
        return new Bar('rainbow');
    }
}

class Bar {
    private $type;

    public function __construct($type)
    {
        $this->type = $type;
    }

    public function someFunction() {
        switch($this->type){
            case 'rainbow':
                echo 'All the way across the sky.';
                break;
            default:
                echo 'Boring.';
                break;
        }
    }
}


$foo = new Foo();

$foo->getRainbow()->someFunction();

阅读流畅的界面。谢谢!!我试着先用一本书来学习php、mysql和html,但没有成功!现在我正在设计我的项目,所有的东西都是首先作为工具来研究的,但是我有很多问题,因为没有一本书是完美的解决它们的。如果这些问题是垃圾,我可以随时删除它们!!你看,第一,我想要一些东西,第二,我想如何做,第三,我问一个问题,以找到合适的工具的工作!什么不起作用?你有错误吗?或者它只是没有按照你期望的方式表现。不管怎样,用你尝试过的代码和你的错误/问题更新你的问题,也许我可以进一步帮助你。没有!但根据你的解释,我研究了“流畅的界面”,并找到了另一种方法!更优雅,重新表达这一点。