iT邦幫忙

0

php 中把類別名稱用陣列元素替代

請問在 php 中
我如果把類別名稱用陣列元素替代
會不會有什麼問題呢

例如:

$type = 'aaa';

$className = array(
	'aaa' => 'class_aaa',
	'bbb' => 'class_bbb',
	'ccc' => 'class_ccc'
);
$obj = new $className[$type]();

目前是可以執行
可是擔心會不會這是錯誤的用法
而之後出現問題
謝謝大家

2 個回答

2
wiseguy
iT邦超人 1 級 ‧ 2016-06-20 01:03:55
最佳解答

如費大師所言,可以執行就等於可以用。
不過我建議,可以的話,用個意義比較明顯的變數賦值後,再當類別用。比如:

$class = $className[$type];
$obj = new $class();

一來比較好懂,二來可以避掉極難除錯的運算子優先順序問題。

samjam iT邦新手 4 級 ‧ 2016-06-20 11:54:17 檢舉

謝謝 wiseguy 的建議

2
fillano
iT邦超人 1 級 ‧ 2016-06-17 15:30:54

如果是錯誤的用法,就不會讓你可以執行了阿...

不過沒有好理由的話,並不建議這樣做,因為可能會比較難維護。

weiclin iT邦高手 4 級 ‧ 2016-06-17 16:30:11 檢舉

還有個預設值問題,如果陣列內沒這個 type 怎麼辦?

samjam iT邦新手 4 級 ‧ 2016-06-20 11:53:25 檢舉

謝謝費大師的回答。

samjam iT邦新手 4 級 ‧ 2016-06-20 11:53:44 檢舉

預設值部分我可能到時寫正式的程式碼時再做檢查
謝謝 weiclin

我要發表回答

立即登入回答