Blade, автолоад и статические методы, тоже вариант
Koenig, ну если по назначению классы сами посебе похожи то почему бы и не сделать родителя для них. Незнаю как у тебя так получается, я когда только начинал с ООП знакомится наследование ниразу не понадобилось. А сейчас теперь не могу понять нахрена нужны интерфейсы, потом там еще какие то трейты в пхп вводить собирались.
Blade (03.08.2012/13:15)
Koenig, пишешь какие то методы, а потом подключаешь их в любые классы.
это как?
мб ты имел ввиду создать в классе метод а потом из другого файла его вызывать?
Koenig, Если наследование оправдано - применяй.
В остальных случаях, передавай необходимые обьекты в класс.. х.з как это на пальцах то обьяснить.
Вобще, скажу не оч.правильную вещь, ну да пофиг: если ты привык к процидурам - используй их.
М.б потом станет легче и ты самостоятельно найдёшь нужный путь.
Screamer, нет, я кажись с интерфейсами спутал
нет, это трейты, вот чо. только это для php 5.4
http://ru2.php.net/manual/ru/l ... s.php
Screamer, ну я например в трайтах пока не нашел нужды, но вот например в нэймспейсах плюс есть
Blade (03.08.2012/15:27)
нет, это трейты, вот чо. только это для php 5.4
http://ru2.php.net/manual/ru/l ... s.php
тоже по сути можно собрать что я написал, даже отдельные методы вытащить, но пока все это сложно для понимания
Вот учу ооп, есть такой код
abstract class AUser {
abstract function showInfo();
}
//создаем класс
class User extends AUser{
public $name;
public $login;
public $password;
const INFO_TITLE = 'Данные пользователя:<br/>';
function showTitle(){
print (self::INFO_TITLE);
}
//создаем метод
function showInfo(){
echo 'Имя - '.$this->name.'<br/>';
echo 'Логин - '.$this->login.'<br/>';
echo 'Пароль - '.$this->password.'<br/>';
}
function __construct ($n = '',$l = '',$p = ''){
try{
if($n == '' or $l == '' or $p == '')
throw new Exception('введены не все данные');
$this->name = $n;
$this->login = $l;
$this->password = $p;
}catch(Exception $e){
echo $e->getMessage();
}
}
function __clone(){
$this->name = 'Guest';
$this->login = 'guest';
$this->password = 'qwerty';
}
}
//создаем объект 1
$ob1 = new User('zhenya','zheka','23534');
//print (User::INFO_TITLE);
echo $ob1->showTitle();
echo $ob1->showInfo().'<br/>';//Вызов метода
//создаем объект 2
$ob2 = new User('lol','loh','6546');
//print (User::INFO_TITLE);
echo $ob1->showTitle();
echo $ob2->showInfo().'<br/>';//Вызов метода
//создаем объект 3
$ob3 = new User('vasya','vasya','13765495');
// print (User::INFO_TITLE);
echo $ob1->showTitle();
echo $ob3->showInfo().'<br/>';//Вызов метода
$ob4 = clone $ob1;//Копирование объекта
echo $ob4->showInfo().'<br/>';//Вызов метода
interface ISuperUser {
function getInfo();
}
class SuperUser extends User implements ISuperUser{
public $role;
function __construct ($n,$l,$p,$r){
parent::__construct($n,$l,$p);
$this->role = $r;
}
function showinfo(){
parent::showInfo();
echo 'Роль - '.$this->role.'<br/>';
}
function getInfo(){
$arr = array();
foreach($this as $k=>$v){
$arr[$k] = $v;
return $arr;
}
}
}
$ob5 = new SuperUser('Super admin','root','pass','admin');
echo $ob5->showInfo().'<br/>';
print_r ($ob5->getInfo());
print_r ($ob5->getInfo()); должно вывести все содержимое массива, а выводит не все.
Где ошибка?
Zheka12345, Смотрю за уроки от специалиста взялся? =) Слушай Игорька и всё получится, пересмотри снова.