我拼命地學習如何使用PHP中的類。我試圖做一個簡單的類來複制存儲用戶信息的壞習慣,作爲一個數組,我將首先將它設置爲「全局」,然後用於函數。簡單的php類來存儲用戶信息
下面是我做這個類非常笨拙的嘗試。它不起作用的原因有100個。你能修好它嗎?
class user{
private $user;
function __construct(){
$user=/*some SQL to create a $user array. Assume one pair is 'firstname'=>'Brian'*/
}
function showValue($key) {
echo $user[$key];
}
function changeValue($key,$newValue) {
$user[$key]=$newValue;
}
}
echo "Hello there ".user->showValue('firstname')."!"; //should echo: Hello there Brian!
user->changeValue('firstname',"Steven");
echo "Now your name is ".user->showValue('firstname'); //should echo: Now your name is Steven
//the same class needs to work inside a function too
function showLogin() {
echo "Logged in as ".user->showValue('firstname');
}
showLogin(); //Should echo: Logged in as Steven
UPDATE
爲什麼我不想這樣做,因爲數組不再的原因是因爲我經常不得不使用數組內的功能是這樣的:
function showLogin() {
global $user;
echo "Logged in as ".$user['firstname'];
}
showLogin();
我想避免使用那裏的「全球」,因爲我被告知這是邪惡的。
而且我不想通過$ user將showLogin()傳遞給showLogin($ user)。在這個非常簡單的情況下,它是有道理的,但是當我做很複雜的函數來繪製像這樣的很多數組時,我不想讓每個數組都通過。
這比一個簡單的休閒陣列更糟糕。你爲數組做了一個包裝。而且你做錯了方式。 :)你有像__set和__get這樣的魔術方法。 –
發佈你得到的錯誤將是一個很好的開始尋求幫助的地方... – JRizz
也許我錯過了一些東西,但爲什麼你不使用會話變量?將用戶信息存儲在會話中。 –