Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在类中的函数中调用函数(PHP)_Php_Function_Class - Fatal编程技术网

在类中的函数中调用函数(PHP)

在类中的函数中调用函数(PHP),php,function,class,Php,Function,Class,非常简单的设置,但我就是不明白 functions.php myfile.php 我得到了一个错误: 在null上调用成员函数sendMail() 任何帮助都将不胜感激 你在哪里找到这样的语法 如果您想按类型(输出函数、输入函数等等)对函数进行分组,我会为每种类型创建不同的类。然后应该将它们定义为公共或私有 如前所述,嵌套函数不能从外部访问,它们只在定义它们的函数的范围内可用 class Methods1 { public function do1() { echo __FUNCT

非常简单的设置,但我就是不明白

functions.php

myfile.php

我得到了一个错误:

在null上调用成员函数sendMail()


任何帮助都将不胜感激

你在哪里找到这样的语法


如果您想按类型(输出函数、输入函数等等)对函数进行分组,我会为每种类型创建不同的类。然后应该将它们定义为公共或私有

如前所述,嵌套函数不能从外部访问,它们只在定义它们的函数的范围内可用

class Methods1 {
  public function do1() {
    echo __FUNCTION__ . PHP_EOL;
  }

  public function do2() {
    echo __FUNCTION__ . PHP_EOL;
  }
}

class Methods2 {
  public function do1() {
    echo __LINE__ . PHP_EOL;
  }

  public function do2() {
    echo __LINE__ . PHP_EOL;
  }
}

class Factory {
  public function getMethods1() {
    static $cache = new Methods1;

    return $cache;

  }

  public function getMethods2() {
    static $cache = new Methods2;

    return $cache;

  }
}
用法:

$factory = new Factory;
$factory->getMethods1()->do1();
$factory->getMethods1()->do2();
$factory->getMethods2()->do1();
$factory->getMethods2()->do2();

错误的语法和错误
sendMail
已声明为内部私有函数,内部为
output\u函数
,因此您无法在外部访问它。顺便说一句,
output\u函数
不返回任何内容,因此这也是胡说八道。将您的方法转换为受保护或公共方法如何?如果需要将它们与其他类型的方法分离,您可能会更好地(?)创建一个单独的类
output\u函数。@Pierre不幸的是,这不是胡说八道,此文件在TYPO3中使用。要使用这些函数,它们实际上必须以这种方式嵌套。@我已经试过了。无法公开sendMail()。这只是一个观点,但静态方法不利于测试/代码重用。感谢您的输入。我在这里找到了它:一般来说,最好至少包含一些关于解决方案如何工作以及它如何解决OP的解释problem@WilliamPerron是的,但这段代码很简单,而且可以自我解释。两个方法,使用不同的方法返回两个不同的类。正如主题创建者想要做的。谢谢!我想,就是这样。从外部访问嵌套函数是不可能的。所以你在帖子中写的方式真是胡说八道!
class Helper_Output {

  static public function sendMail($to, $subject, $message){
            //...code...
        }
}

//and usage: 
Helper_Output::sendMail("mail@mail.com","My Subject","My Message");
class Methods1 {
  public function do1() {
    echo __FUNCTION__ . PHP_EOL;
  }

  public function do2() {
    echo __FUNCTION__ . PHP_EOL;
  }
}

class Methods2 {
  public function do1() {
    echo __LINE__ . PHP_EOL;
  }

  public function do2() {
    echo __LINE__ . PHP_EOL;
  }
}

class Factory {
  public function getMethods1() {
    static $cache = new Methods1;

    return $cache;

  }

  public function getMethods2() {
    static $cache = new Methods2;

    return $cache;

  }
}
$factory = new Factory;
$factory->getMethods1()->do1();
$factory->getMethods1()->do2();
$factory->getMethods2()->do1();
$factory->getMethods2()->do2();