Вопрос-Ответ по ООП PHP

Печать RSS
2700

В
Автор
Пацак
0
хотя в С++ ето роде указатели...запутался...)))
N

Эцилопп сией тентуры
0
id1, муха тоже самолет, а железо как пластмас)))
Или я дурак, или объясни более доступно =)
Д

Землянин
0
Немогу понять почему не могу получить значение переменной в вввиде
$user= new User($id_user);
$user->id;
<?php
/**
* Класс для работы с пользователем
*/
class user{

protected $data = array();

function __construct()
{
$this->user($id_user);
}

function __get($name){
return $this->data[$name];
}

function __set($name, $value){
if (!isset($this->data['id']))return false;
$this->data[$name] = $value;
}

protected function user($id_user)
{
$db = Registry::get('db');
$id_user = input_valid::clear_var($id_user ,'int');
if($db->query('SELECT COUNT(*) FROM `user` WHERE `id` = "'.$id_user.'" LIMIT 1')==1) {
$sel = 'SELECT * FROM `user` WHERE `id` = "'.$id_user.'" LIMIT 1';
$this->data = $db->query($sel)->fetch(PDO::FETCH_ASSOC);
}
}

}

Помогите пжл.

2000 лет д.н.э.
0
function __construct()
{
$this->user($id_user); ты эту переменную из воздуха берешь? шаман однако
}
В
Автор
Пацак
0
103.Я всмысле возможно ли копировать обьект передавая его по ссылке...
и как ето влияет на производительность...
дело в том что в С++ библиотеке VCL когда подключаеться класс там инклудить етот клас (в файле класса уже создаеться обьект) и что использовать етот обькт делають ссылки
TForm *TForm1;
(както так)

2000 лет д.н.э.
0
$a = new Class;
$b = $a;
$b->method;
Ты про это что ли?
не понятно выражаешься..
П

Пацак
0
В php5> все объекты автоматически передаются по ссылке, т.е. в примере выше $b и $а один и тот же объект (аналогично в java и js). В php 4, вроде, нужно писать для этого $b=&$a;

Добавлено через 05:34 сек.
А вообще любой объект - массив свойств и функции... (в памяти они хранятся именно так) Поэтому, можно использовать ООП подход даже без классов.
Д

Землянин
0
ramzes (26 Июля 2011 / 23:51)
function __construct()
{
$this->user($id_user); ты эту переменную из воздуха берешь? шаман однако
}
Все должно работать ) ,я так сто раз делал D , а вот с массивчиком беда получается не могу получить ,может естьу кого еще предположения ,код немного подправил
<?php
/**
* Класс для работы с пользователем
*/
class User{

 protected $data = array();

 function __construct()
 {
 $this->user_go($id_user);
 }
 
 protected function user_go($id_user)
 {
 $db = Registry::get('db');
 $id_user = input_valid::clear_var($id_user ,'int');
 if($db->query('SELECT COUNT(*) FROM `user` WHERE `id` = "'.$id_user.'" LIMIT 1')==1) {
  $sel = 'SELECT * FROM `user` WHERE `id` = "'.$id_user.'" LIMIT 1'; 
  $this->data = $db->query($sel)->fetch(PDO::FETCH_ASSOC);
  }
 }
 
 function __get($name){
 return $this->data[$name];
 }
 
 function __set($name, $value){
 if (!isset($this->data['id']))return false;
 $this->data[$name] = $value;
 }
}

Добавлено через 01:15 сек.
Заметил свой косяк в конструктор значение переменной не передал ,сейчас проверим )

Добавлено через 02:38 сек.
Все теперь работает )

2000 лет д.н.э.
0
108. Danis92, Я тебе с самого начала об этом говорил
Д

Землянин
0
Неполучает массив $user ,думаю $sel = 'SELECT * FROM `user` WHERE `login` = "'.$login.'" LIMIT 1';
$user = $db->query($sel)->fetch(PDO::FETCH_ASSOC); из-за этого с id он норм работает ,а с логином не получится?
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск