[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как перекинуть переменные из одного метода в друго
evdonik
Все привет, господа светлые головы подсобите,а то совсем запутался...перехожу на ооп..да что то так тяжело идет что пипец...

есть вообще задание..считать файл вытащит оттуда все поля через разделитель,распарсить и по параметру выводить..это фиг с ним это сделал..но ни как не вкурю как с объектами работать ...скурил кучу манулаов..а все путаюсь...

class employee {

public $id;
public $surname;
public $name;
public $patronymic;
public $post;
public $sex;



public static function byID($id){
//Вытащили все из фала в общем..теерь проверям по id если есть совпадение вытаскиваем строку и создаем объект

foreach ($users as $key=>$user) {
list($id_m, $surname_m, $name_m, $name_m,$patronymic_m, $post_m, $sex_m) = explode("|", $user);
if ($id_m==$id ){$new_user=$user;}

}


list($id, $surname, $name,$patronymic, $post, $sex) = explode("|",$new_user);


$employee = new Employee;
$employee->id=$id;
$employee->surname=$surname;
$employee->name=$name;
$employee->patronymic=$patronymic;
$employee->post=$post;
$employee->sex=$sex;

print_r($employee);

return $employee;


}


public function fio()
{
А вот здесь мы должны вернуть сроку.н

return $this->name.' '.$this->surname;

//Но как сюда запихнуть объекты $employee->name,$employee->surname, нихрена не понимаю..

}

}



Как быть подмогите..запутался уже с этими объектами...



Спустя 14 минут, 44 секунды (12.01.2011 - 22:55) sixpoundeeer написал(а):
Отформатируйте код нормально. Ничего не понятно, особенно с фигурными скобками.

Спустя 17 минут, 32 секунды (12.01.2011 - 23:12) evdonik написал(а):

class employee {

public $id;
public $surname;
public $name;
public $patronymic;
public $post;
public $sex;



public static function byID($id){

//Вытащили все из файла в общем..теперь проверям по id если есть совпадение вытаскиваем строку и создаем объект

foreach ($users as $key=>$user) {
list($id_m, $surname_m, $name_m, $name_m,$patronymic_m, $post_m, $sex_m) = explode("|", $user);

if ($id_m==$id ){$new_user=$user;}} }

list($id, $surname, $name,$patronymic, $post, $sex) = explode("|",$new_user);


$employee = new Employee;
$employee->id=$id;
$employee->surname=$surname;
$employee->name=$name;
$employee->patronymic=$patronymic;
$employee->post=$post;
$employee->sex=$sex;

print_r($employee);
return $employee;
}


public function fio()
{
А вот здесь мы должны вернуть сроку.н

return $this->name.' '.$this->surname;

//Но как сюда запихнуть объекты $employee->name,$employee->surname, нихрена не понимаю..

}


}






Спустя 24 минуты, 58 секунд (12.01.2011 - 23:37) T1grOK написал(а):
Вы возвращаете в статическом методе экземпляр класса так и обращайтесь к нему как к объекту:

echo employee::byID($id)->fio();

Спустя 4 минуты, 12 секунд (12.01.2011 - 23:41) evdonik написал(а):
а как вызов сделать допусти вот таким образом
$fio = $Employee->FIO();
??

Спустя 3 минуты, 34 секунды (12.01.2011 - 23:45) evdonik написал(а):
мне вообщем нужно чтоб в метод fio попали переменные name surname,и в нем они возвращались..

Спустя 5 минут, 24 секунды (12.01.2011 - 23:50) T1grOK написал(а):
Указанным мною способ работает. И никак они туда не попадают, просто они являются некоторым свойством экземпляра класса(они содержатся в "контейнере" экземпляра класса)

Спустя 4 минуты, 45 секунд (12.01.2011 - 23:55) T1grOK написал(а):
Чтобы было понятней:

$employee = employee::byID($id);
$employee->fio();


Спустя 4 минуты, 46 секунд (13.01.2011 - 00:00) evdonik написал(а):
То есть вот это
public function FIO() {
return $this->familia . ' ' . $this->imya . ' ' . $this->otchestvo;
}


то есть это бессмыслица чтоли??

Спустя 4 минуты, 10 секунд (13.01.2011 - 00:04) evdonik написал(а):
Суть задачи такая.

Нужно написать класс Employee (сотрудник).

Свойства класса - поля из csv-файла.

Методы:
1) Статический метод byID($id), возвращающий объект класса Employee, построенный по табельному номеру.
Вызов должен выглядеть следующим образом: $Employee = Employee::byID($id).
То есть, передаём в качестве параметра 1000 - на выходе получаем объект класса Employee, в котором табельный номер равен 1000, фамилия равна Иванов и т.д.

2) Метод FIO(), возвращающий ФИО сотрудника.
То есть, в результате выполнения кода:
/*
$Employee = Employee::byID(1000);
$fio = $Employee->FIO();
*/
в переменной $fio должно находиться 'Иванов Иван Иванович'.

как то как..

Спустя 6 минут, 33 секунды (13.01.2011 - 00:10) T1grOK написал(а):
Указанный мной способ именно это и делает. Проверьте если не верите))

Спустя 2 минуты, 49 секунд (13.01.2011 - 00:13) evdonik написал(а):
Цитата (T1grOK @ 12.01.2011 - 21:10)
Указанный мной способ именно это и делает.

Он возвращает полностью все данные..а как вернуть только имя фамилию и отчество.

Спустя 5 минут, 4 секунды (13.01.2011 - 00:18) T1grOK написал(а):
Блин. Какие все данные? Oн возвращает экземпляр класса благодаря которому можно обратиться к методу fio(), собственно почему и подход называется объектно-ориентированным.

Спустя 3 минуты, 32 секунды (13.01.2011 - 00:22) evdonik написал(а):
Так..ладно...
тормоз я уж..чтож поделать..
как обратится к методу fio() чтоб он нам вернул name surname ?

Спустя 4 минуты, 50 секунд (13.01.2011 - 00:27) sixpoundeeer написал(а):
Цитата (evdonik @ 12.01.2011 - 21:22)
Так..ладно...
тормоз я уж..чтож поделать..
как обратится к методу fio() чтоб он нам вернул name surname ?

Странный ты :) Сам же написал метод для возвращения этих данных:
public function getFIO()
{
return $this->name .' '. $this->surname;
}


Применять его нужно относительно объекта Employee, который, собственно и будет содержать эти свойства. Как это делать писали выше.

Спустя 4 минуты, 38 секунд (13.01.2011 - 00:31) evdonik написал(а):
Цитата (sixpoundeeer @ 12.01.2011 - 21:27)
Цитата (evdonik @ 12.01.2011 - 21:22)
Так..ладно...
тормоз я уж..чтож поделать..
как обратится к методу fio() чтоб он нам вернул name surname ?

Странный ты :) Сам же написал метод для возвращения этих данных:
public function getFIO()
{
return $this->name .' '. $this->surname;
}


Применять его нужно относительно объекта Employee, который, собственно и будет содержать эти свойства. Как это делать писали выше.

Да говорю же путаюсь пока...
получается что в переменную
$this->name
попадает
$employee->name
.
и он возвращается?а чегож при выводе там пусто??

Спустя 6 минут, 4 секунды (13.01.2011 - 00:37) sixpoundeeer написал(а):
Цитата (evdonik @ 12.01.2011 - 21:31)
получается что в переменную
$this->name
попадает
$employee->name
.
и он возвращается?а чегож при выводе там пусто??

Совершенно верно. Псевдопеременная $this означает "текущий объект". Тоесть, "$this->name" читается как: "свойство (поле) $name текущего объекта. "Текущий объект" в данном случае - это объект, к которому применяется функция fio().

Почему не выводится - другой вопрос. Исправляй ошибки в коде. Например, у тебя название класса начинается со строчной буквы, а при создании объекта используется прописная.

Спустя 5 минут, 14 секунд (13.01.2011 - 00:43) evdonik написал(а):
Едрид Мадрид...а слона то и не заметил...все работает))))
Спасибо камрады)))
Блин..вот бестолочь))))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.