ホームページ > バックエンド開発 > PHPチュートリアル > なぜこのように書くとダメなのでしょうか?

なぜこのように書くとダメなのでしょうか?

WBOY
リリース: 2016-06-23 13:33:03
オリジナル
1054 人が閲覧しました

下の図は、私が作成したクラスのメソッドです。
メソッドを反転するために同じ型の別のメソッドを呼び出そうとしましたが、結果はエラーを示しました: 致命的なエラー: D の未定義関数 reverse() の呼び出し: WWWshopcontrolindex.php 12行目

もちろん、この文のプロンプトには、reverse 関数が定義されていないと書かれていますが、
明確に定義しましたが、仕様に準拠していないものはありませんか?
ディスカッションへの返信 (解決策)

問題は reverse(substr($str,1)) です self::reverse(substr($str,1));問題は reverse(substr($str,1)); ここで見つかりませんでしたか?
self::reverse(substr($str,1)); 試してみたところ、すべての逆関数が削除されました。空のシェルが残り、エラーは報告されませんでした。ここで問題が発生します。再帰メソッドをクラス内に記述できないということですか?

#1 はっきり言いましたが、なぜ見て見ぬふりをするのですか?


メソッドはスコープのない関数になります

理由は明らかです、問題を解決する方法は


問題は reverse(substr($str,1)) です
self:: reverse(substr ($str,1));

彼は self::reverse(substr($str,1)); の書き方をすでに知っていましたか?



問題は reverse(substr($str,1)); ここでは見つかりませんでした

self::reverse(substr($str,1)); 彼はすでにその方法を知っていませんでしたかself::reverse (substr($str,1));? と書きます。

self:: を試してみましたが、やはり上記と同じプロンプトです


コードを投稿してください。スクリーンショットは撮らないでください


メソッド reverse() には再帰呼び出しがあります。

問題なく書きました

class indexControl{	public function reverse($str)	{		if(strlen($str)>0)		{			self::reverse(substr($str,1));			echo substr($str,0,1);			return;		}	}		public function indexOp()	{		self::reverse("adfdsfd");	}}indexControl::indexOp();
ログイン後にコピー

フレームワークの影響を受けていますか?
さらに、文字列を逆にしたいだけの場合は、strrev 関数を使用できます。再帰する必要はありません

する必要もありますreverse(substr($str,1)); というメソッドがありますが、このメソッドはエラーを報告します。これを self::reverse(substr($str,1)) または $this->reverse($ str,1 :) ); または $this->reverse(substr($str,1)); それが正解です。 ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート