新しい 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 />}