ホームページ >バックエンド開発 >PHPチュートリアル >クラス メソッドで array_map を使用するとエラーが報告されました --- 再宣言できません
メソッドは次のように定義されます:
class maaper{
......
public function getProperties(){
function getName($reflectionProperties){
return $reflectionProperties->name
}
$domain=$ this-> ;get_domain();
$reflectionProperties=$domain->getProperties(ReflectionProperty::IS_PUBLIC);
$properties を返す }
…。呼び出しプロセスは次のとおりです (注: $mapper_1 と $mapper_2 は同じ実行時にメソッドを呼び出します)。
var_dump( $mapper_1->getProperties()); // 正しく返されます
var_dump($mapper_2->getProperties()); // エラーレポート getName() を再宣言できません
スクリーンショットは次のとおりです:
返信ディスカッション (解決策)
エラー メッセージを読みませんか?
致命的なエラー: getName() を再宣言できません
致命的なエラー: getName() を再宣言できません
class maaper{
protected function getName($reflectionProperties){
$reflectionProperties=$domain->getProperties(ReflectionProperty::IS_PUBLIC);
$properties=array_map(array($this, 'getName'), $reflectionProperties) ;
return $properties;
$domain= $this->get_domain();
$reflectionProperties=$domain->getProperties(ReflectionProperty::IS_PUBLIC);
そうしないでくださいエラーメッセージが表示されましたか?
致命的なエラー: getName() を再宣言できません
致命的なエラー: getName() を再宣言できません
class maaper{
protected function getName($reflectionProperties){
return $reflectionProperties->name
}
public function getProperties() {
$domain=$this->get_domain();
$reflectionProperties=$domain->getProperties(ReflectionProperty::IS_PUBLIC);
$properties=array_map(array($this, 'getName'), $reflectionProperties) ;
return $properties;
$domain= $this->get_domain();
$reflectionProperties=$domain->getProperties(ReflectionProperty::IS_PUBLIC);
ありがとうございます
なぜ再宣言エラーが発生するのでしょうか?
$reflectionProperties=$domain-> getProperties(ReflectionProperty::IS_PUBLIC);
getProperties を再入力した場合、getProperties で定義された関数は再定義されませんか?
$reflectionProperties=$domain-> getProperties(ReflectionProperty::IS_PUBLIC);
getProperties を再入力した場合、getProperties で定義された関数は再度定義されませんか?
$domain-> getProperties への呼び出しが 2 つありますが、ここでの getProperties は $domain ドメイン オブジェクトが属するクラスで定義されており、その中には getName メソッドがありません。エラー メッセージは、クラス マッパーの getProperties にある getName メソッドを再宣言できないというものです。
それで。 。 。 。それはそうではないようです
return $reflectionProperties->name;
}
グローバル関数はどこにでも定義されます
return $ reflectionProperties- >name;
}
グローバル関数はどこにでも定義されます
これは的中しました
ありがとうございます! ! !