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

时间:2018-02-21 13:19:15

标签: php function class

非常简单的设置,但我根本就没有得到它......

的functions.php

class functions {
    function output_functions() {
        function sendMail($to, $subject, $message){
            //...code...
        }
    }
}

myfile.php

include $_SERVER['DOCUMENT_ROOT'] ."some/subfolders/functions.php";

$myFunction = new functions();
$myFunction->output_functions()->sendMail("mail@mail.com","My Subject","My Message");

我收到了错误:

  

在null

上调用成员函数sendMail()

任何帮助都将受到高度赞赏!

3 个答案:

答案 0 :(得分:2)

如果你想按类型(output_functions,input_functions等)对你的函数进行分组,我会为每个函数做一个不同的类。然后,您应该将它们定义为公共或私有。

正如已经说过的那样,嵌套函数不能从外部加入,它们只能在定义它们的函数范围内使用。

答案 1 :(得分:0)

你在哪里找到这样的语法?

class Helper_Output {

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

//and usage: 
Helper_Output::sendMail("mail@mail.com","My Subject","My Message");

答案 2 :(得分:0)

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();