ホームページ >バックエンド開発 >PHPチュートリアル >この元のコードを論理的に理解するにはどうすればよいでしょうか?

この元のコードを論理的に理解するにはどうすればよいでしょうか?

WBOY
WBOYオリジナル
2016-06-23 13:37:42963ブラウズ

まずはロジックについて簡単に説明します。 もちろん、まだ詳細は理解していませんが、意図を示すために大まかに説明します。
これは、テンプレートに変数を投げるクラスです。 MVC パターン。理解したいのは、次のコードは、テンプレートに変数をスローするために相互に論理的に対話する方法です
まず、重要なメソッドがあります

class Tpl{	/**	 * 抛出变量	 *	 * @param mixed $output	 * @param  void	 */	public static function output($output,$input=''){		self::getInstance();				self::$output_value[$output] = $input;	}
です
getlnstance() メソッドは次のとおりです
class Tpl{	/**	 * 实例化	 *	 * @return obj	 */	public static function getInstance(){		if (self::$instance === null || !(self::$instance instanceof Tpl)){			self::$instance = new Tpl();		}		return self::$instance;	}

class Tpl{	/**	 * 单件对象	 */	private static $instance = null;

さて、ここで私の質問が来ます:
出力メソッドの self::getInstance(); が何に使われているのか理解できません。ここで理解するのが難しいのは、$instance が null 値であるということです。それで、意味は何ですか? それは空です
私の理解では (もちろん、それは正しくないかもしれませんが)、出力メソッドに 2 つの文があると思われます。そうであれば、if 判定を使用しないのはなぜでしょうか。という2つの可能性があります
self:: $output_value[$output] = $input; という疑問もありますが、単に配列を代入するだけではダメなのでしょうか?余計なこと


ディスカッションへの返信(解決策)

これについては、テンプレートレンダリングクラスの実装に問題があります。詳しく説明する必要はありません。 $input=''){

self::getInstance();
すべての静的メソッドを持つクラスをインスタンス化する必要はありません。


このテンプレート レンダリング クラスの実装には問題があります。詳しく説明する必要はありません。

public static function Output($output,$input=''){

self:: getInstance( );

このステートメントは不要です。すべての静的メソッドを含むクラスはインスタンス化する必要はありません。



それでは、次のコードをどのように理解すればよいでしょうか?

$model = Model();        $brand_c_list = $model->table('brand')->where(array('brand_apply'=>'1'))->order('brand_sort asc')->select();        $brands = $this->_tidyBrand($brand_c_list);        extract($brands);        Tpl::output('brand_c',$brand_listnew);

Tpl::output('brand_c',$brand_listnew); の brand_c' に $ 記号が追加されていないのは、メソッドに含まれているためです。

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