필자는 필사적으로 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();
나는 이것이 악하다고 들었으므로 거기서 "글로벌"을 사용하는 것을 피하고 싶습니다.
그리고 showLogin ($ user)처럼 $ user를 showLogin()에 전달하고 싶지 않습니다. 이 아주 간단한 경우에는 의미가 있지만, 이렇게 많은 배열을 그리는 매우 복잡한 함수를 수행 할 때마다 모든 배열을 전달하지 않아도됩니다.
이것은 더 간단한 캐주얼 배열입니다. 배열에 대한 래퍼를 만들었습니다. 그리고 또 잘못 했어. :) 당신은 __set과 __get과 같은 마법 방법을 사용합니다. –
오류를 게시하면 도움을받을 수있는 좋은 곳이 될 것입니다 ... – JRizz
어쩌면 내가 누락되었지만 왜 세션 변수를 사용하지 않습니까? 세션에 사용자 정보를 저장하십시오. –