ホームページ  >  記事  >  バックエンド開発  >  新しいphpクラスの作成に関連する問題

新しいphpクラスの作成に関連する問題

WBOY
WBOYオリジナル
2016-06-13 12:27:35902ブラウズ

新しい PHP クラスの問題
index.php ファイル
function __autoload($_className) {
require $_className.'.class.php';
}
/ /新しいクラス? ?
if (isset($_GET['index'])) {
$m=new Main($_GET['index']);
}else{
$m= new Main();

}
include $m->ui();

main.class.php ファイル

クラスMain{
private $index;
//構築メソッド、初期化データ
public function __construct($index=''){
$this->gt;index=$index;
}
//ui 関数には、対応するインクルード ファイルが含まれます
public function ui(){
if(empty($this->index)||!file_exists($this->index.'.inc ')){
$this->index='start';
}
return $this->index.'.inc';
}
}
赤テキスト この部分の意味: クラスのコンストラクターによって渡されるパラメーター値はデフォルトで空に設定されています (パブリック関数 __construct($index=''))。なぜ直接 $m=new と書くことができないのでしょうかMain($_GET['index'] );。インデックスで赤文字の if 判定をしたくない場合、クラスには何を書けばよいでしょうか?ありがとう、よくわかりません
-----解決策のアイデア----------------------
if (isset ($_GET['index'])) {
$m=new Main($_GET['index']) //$_GET['index'] が存在する場合は $_GET[' を使用しますindex'] as Parameter
}else{
$m=new Main(); // それ以外の場合は、デフォルトのパラメータを使用します
}

$_GET['index'] を直接使用すると、 NOTICE レベルのエラーが発生する
受信データを無差別に使用すると、セキュリティ上の問題が発生する可能性があります
------解決策のアイデア------ -- -
少し変えてみましたが、どう思いますか?

<?php<br />class Main{<br /><br />	private $index;<br /><br />	//构造方法,初始化数据<br />	public function __construct($index='')<br />	{<br />		$this->index=$index?$index:'';<br />	}<br /><br />	//ui函数include相应的包含文件<br /><br />	public function ui()<br />	{<br />		if(empty($this->index)<br><font color='#FF8000'>------解决思路----------------------</font><br>!file_exists($this->index.'.inc'))<br />		{ <br />			$this->index='start';<br />		}<br /><br />		return $this->index.'.inc';<br />	} <br />}

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