ホームページ >バックエンド開発 >PHPチュートリアル >クラス メソッドで array_map を使用するとエラーが報告されました --- 再宣言できません

クラス メソッドで array_map を使用するとエラーが報告されました --- 再宣言できません

WBOY
WBOYオリジナル
2016-06-23 14:19:351250ブラウズ

メソッドは次のように定義されます:
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){

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


そうしないでくださいエラーメッセージが表示されましたか?
致命的なエラー: 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 メソッドを再宣言できないというものです。


それで。 。 。 。それはそうではないようです

function getName($reflectionProperties){

return $reflectionProperties->name;
}
グローバル関数はどこにでも定義されます

function getName($reflectionProperties){

return $ reflectionProperties- >name;
}
グローバル関数はどこにでも定義されます
これは的中しました
ありがとうございます! ! !

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。