PHP에서는 많은 사람들이 클래스를 사용하여 세션 변수를 가져올 것이라는 것을 알고 있습니다. 지금은 많은 클래스에서이 작업을하고 있습니다. 잘못하고 있는지를 알아야합니다. 그래서 예를 들어메소드가 PHP 클래스에서 여러 번 실행되면 클래스 변수에 캐시되어야합니까?
내가 15 개 방법이있는 경우이 클래스에서 이제이 값
$_SESSION['user_id']
을 얻고 각각의 방법이
$session->get('user_id')
를 사용해야하는 클래스가 척 할 수 있습니다 I 이 값을 여러 번 액세스해야합니다. 현재 클래스 당 1 회를 해당 클래스의 로컬 변수로 설정해야하는 경우 클래스에서 $ session-> get ('user_id') 20 회 호출하고 있습니다. 그런 다음 액세스 할 수 있습니까? 어떤 차이를 만들지 모르겠다면, 내 이론은 내가 지금하고있는 방법은 피할 수있는 20 개의 추가 함수 호출이라는 것입니다.
제 이론이 맞다면, 클래스 내부에 이러한 값을 저장하는 가장 좋은 방법은 무엇입니까? 개인 또는 공개 또는 보호 된 변수와 비슷합니까?
죄송합니다. 혼란스러워서 죄송합니다. 클래스와 객체는 배우는 데 다소 시간이 걸립니다.
또한 $ session-> get ('user_id')은 똑같은 작업을 수행하는 데 필요한 많은 다른 변수 중 하나입니다.
UPDATE
배열을() 사용에 대한 Chacha102의 게시물을 읽고 나면 ... 여기가 생겼는데, 내가 시도 것입니다 좋은 방법 또는 아직도 많이 향상시킬 수 있습니까?
클래스 파일
<?PHP
class User
{
// Load user details into an Array
public function load_user()
{
$this->user_id = $this->session->get('user_id');
//if user ID is already set, then Load the cached urser data
if(isset($this->user_id) && $this->user_id != ''){
// set user data to an array
$this->user['user_id'] = $this->user_id;
$this->user['user_name'] = $this->session->get('user_name');
$this->user['pic_small'] = $this->session->get('pic_small');
$this->user['sex'] = $this->session->get('sex');
$this->user['user_role'] = $this->session->get('user_role');
$this->user['location_lat'] = $this->session->get('location_lat');
$this->user['location_long'] = $this->session->get('location_long');
$this->user['new_user'] = $this->session->get('new_user');
return $this->user;
}
}
}
?>
메인 페이지 파일이 같은 일을하는 경우
<?PHP
require 'user.class.php';
$user = new User;
// if a user_id is set into a session variable then we return an array of other user related data
$user->account = $user->load_user();
// would show the user's ID from our array
echo $user->account['user_id'];
?>
배열로 여러 값을 얻으려는 생각이 정말 좋아서 get_array()와 같은 함수를 만들어야하고 내부에 원하는 모든 값을 가져와야합니다. 감사합니다 – JasonDavis
나는 배열을 기반으로 몇 가지 샘플 코드로 내 질문을 업데이 트했습니다, 만약 이것이 어떻게 할 수 있을지 모르겠습니다? 그것은 작동하는 것 같지만 이것은 좋은 방법입니까? – JasonDavis
세션은 사용자 클래스가 호출하는'get_all' 함수를 가지고 있어야합니다. 각각의 물건을 개별적으로 얻는 것은 정말로 신중하지 않아야합니다. 그것의 배열 ('$ _SESSION')에 이미있다. 그래서 그 배열을 붙잡아 야하지 않을까? –