【问题标题】:php fatal error "undefined function" for a function in an elgg plugin libraryelgg插件库中函数的php致命错误“未定义函数”
【发布时间】:2014-06-22 23:42:21
【问题描述】:

我正在尝试为 elgg 编写一个类似于书签插件的插件。我发现 php 不做“innerHTML”,所以我在我的插件库中添加了一些代码来完成它。但是我收到了这个错误:

PHP 致命错误:调用未定义的函数 DOMinnerHTML() /var/www/html/mod/mypluginname/actions/mypluginname/save_address.php 在第 71 行,引用: http://www.example.com/mypluginname/add_address/49

调用代码:

mytitle =  $doc->getElementById('myTitle');
if($mytitle){
   $title = DOMinnerHTML($mytitle);
}

/var/www/html/mod/mypluginname/actions/mypluginname/save_address.php的第71行是:

$title=DOMinnerHTML($mytitle);

函数在/var/www/html/mod/mypluginname/lib/mypluginname.php

function DOMinnerHTML(DOMNode $element)
{
   $innerHTML = "";
   $children  = $element->childNodes;

   foreach ($children as $child)
   {
      $innerHTML .= $element->ownerDocument->saveHTML($child);
   }
   return $innerHTML;
}

知道为什么这个函数不被认为是“定义的”吗?

【问题讨论】:

  • 您是否包含或需要 mypluginname.php ?
  • lib 中调用函数的其他文件都没有这样做,所以我没有。我可以试试……
  • 嗯,就是这样。谢谢你!我添加了要求'/var/www/html/mod/mypluginname/lib/mypluginname.php'。不知道为什么其他功能不需要require...如果您将此作为答案,我会接受。
  • 我会改成回答,所以话题就结束了。将其标记为已回答

标签: php elgg


【解决方案1】:

书签插件正在使用库加载功能elgg_load_library。这允许您通过名称而不是绝对路径来引用库,这使事情变得更加灵活。

如果你想在你的插件中使用它,你需要在 start.php 中使用elgg_register_library

【讨论】:

    【解决方案2】:

    您必须包含或要求 mypluginname.php 吗?

    【讨论】:

    • 这不应该被标记为正确答案,因为 Evan 解释了在 Elgg 中要求非面向对象库的正确方法。
    • 我没有说如何要求或包含文件。我只是问他是否做到了?
    猜你喜欢
    • 2015-10-14
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2016-02-20
    • 2014-07-21
    • 2016-07-02
    相关资源
    最近更新 更多