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