別の関数から関数を呼び出そうとしています。エラーが発生します:
Fatal error: Call to undefined function getInitialInformation()
in controller.php on line 24
controller.phpファイル:
require_once("model/model.php");
function intake() {
$info = getInitialInformation($id); //line 24
}
model/model.php
function getInitialInformation($id) {
return $GLOBALS['em']->find('InitialInformation', $id);
}
すでに試したこと:
これを理解することはできません。ここに何かが足りませんか?
これは開発者のミスでした-終了ブレースの配置が間違っていたため、上記の関数が入れ子関数になりました。
SOの未定義関数エラーに関連する質問がたくさんあります。他の誰かがfunction scopeで同じ問題を抱えている場合、これを答えとして書き留めておきましょう。
最初にトラブルシューティングを試みたもの:
機能が非常に長いため、ブレースをトレースすることは困難でした-レガシーシステムの問題。トラブルシューティングのさらなる手順は次のとおりです。
これをスコープの問題として特定しました。
Netbeansの折りたたみ(コードの折りたたみ)機能を使用して、この機能のすぐ上の機能を確認しました。したがって、上記の1000行の関数は、これと一緒に折りたたまれ、ネストされた関数になります。
問題が特定されたら、関数をファイルの最後に切り貼りして問題を解決しました。
このコードを_p.php
_というファイルに入れます。
_<?php
class yoyo{
function salt(){
}
function pepper(){
salt();
}
}
$y = new yoyo();
$y->pepper();
?>
_
次のように実行します。
_php p.php
_
エラーが発生します:
_PHP Fatal error: Call to undefined function salt() in
/home/el/foo/p.php on line 6
_
解決策:$this->salt();
の代わりにsalt();
を使用します
代わりに次のようにします:
_<?php
class yoyo{
function salt(){
}
function pepper(){
$this->salt();
}
}
$y = new yoyo();
$y->pepper();
?>
_
誰かがPHPクラス内の関数の前に$ thisを使用する必要がある理由へのリンクを投稿できるとしたら、それは素晴らしいことです。
php
はphp.ini
ファイルの短いオープンタグをサポートしていないため、問題が何度も発生します。
<?
phpinfo();
?>
以下を使用する必要があります。
<?php
phpinfo();
?>
あなたの関数はおそらくあなたがそれを呼び出しているものとは異なる名前空間にあります。
他のホスティングですべてが正常に機能したときに、仮想サーバーでこの問題が発生しました。いくつかの変更の後、ファイル内を除くすべての呼び出しでinclude
またはrequire_one
が機能することに気付きました。このファイルの問題は、テキストの最初と最後のコード< ?php ? >
でした。それは< ?
のみのスクリプトであり、実行されていたそのバージョンのApacheでは動作しませんでした