Котерова - можно, но, там много лишнего (куча кода на C в первых главах, например) и не без ошибок в примерах. Мне недавно вот эта приглянулась: http://www.ozon.ru/context/detail/id/139127353/ --- Добавлено --- И главное - именно читать всё, а не тупо набирать и запускать листинги
@Dimon2x я не знаю книгу котерова но могу тебе предложить вот эту тему! https://php.ru/forum/threads/kak-sdelat-ehto-v-bloge.67426/ Я учился по такому материалу: http://php720.com/ https://www.youtube.com/playlist?list=PLSdH7dYnlGYgrWg5wsEG4v03MiJ1WSOTx http://getjump.me/ru-php-the-right-way/ И да я весь этот материалл изучал. Но я бежал по лестнице. Я достал тут всех на форуме, потому что много что не получалось! Изучал весь материал который подворачивался под руку и много читал. Читал хабр и т.д Просто статьи в интернете, что было не понятно спрашивал тут. Но изначально у меня уже был базис я знал что такое php что такое html и что такое js. Имел представление о клиент-серверной архитектуре. И понимал как вообще исполняется программа ! Понимание что есть интерпретация а что компиляция тоже важные вещи! И этот весь базис нужно знать! Про ООП можешь наглядно по русски прочесть вот здесь: Сейчас найду ссыль на статью !
К сожалению тот сайт более не доступен. Он был очень стар. Но на нём было очень хорошее описание основ и принципов ООП ((
Упрости методы, я думаю и от имени класса ясно будет к какому классу относится данный метод. Напиши для сеттера set() для геттера get() для чекера check()
плохо смотрел, плохо читал, там нормально по ООП информации! Посмотри ещё раз не понимаешь спроси! Там всё объяснеет этот чувак! Надо не просто смотреть, а ещё и практиковать то чт опосмотрел, я каждые 5 мин ставил на паузу и практиковал.
@Dimon2x Ну ты понял как тут взаимодействует это: PHP: class Flash { protected $saveSession; public function __construct() { $this->saveSession = new Session(); } public function setMessage($id, $mess) { $this->saveSession->setSession($id, $mess); } С этим: PHP: public function setSession($name, $val) { $this->name = $name; $this->val = $val; return $_SESSION[$this->name] = $this->val; } А это: PHP: public function getMessage($name) { if($this->saveSession->checkSession($name)) { return $this->saveSession->getSessionName($name); } С этим: PHP: public function getSessionName($name) { return $_SESSION[$name];} public function checkSession($name) { if(isset($_SESSION[$name])) { return true; } return false; } Получая аргументы от сюда: PHP: $message = new Flash; $message->setMessage('message1', 'Привет'); echo $message->getMessage('message1');
Да там про сессии в ларавель перелестни на пару страниц назад и почитай посты ) --- Добавлено --- а точней у меня встал вопрос накой нужна обёртка для сессий, когда ими и так просто пользоваться.
@romach, возник вопрос, почему DB-драйвер сессий в Laravel пишет в таблицу User-агента, ip и прочее. Я предположил, что защита от угона.
@mkramer а хз, судя по всему это легаси с давних времен ) Остальные драйвера вроде ничего такого не собирают. Странно. @askanim потому что сессии в laravel далеко не всегда реализуются нативными пыховскими механизмами.
Конечно. В терминах Laravel контракты. Там много чего можно на свои классы заменить. У меня в одном проекте так сделана авторизация без Eloquent
Во всех нормальный фреймворках так. В Yii2 тоже можно свои классы вместо стандартных подставлять. Это же базовый принцип - зависеть от интерфейсов, а не от реализации.
Читаю Котерова, решил совместить упражнения на 435 странице и на 445, обращаюсь к create 3 раза, почему записывается только 2 лога, а не 3? PHP: <?php class FileLogger { //массив всех созданных объектов-журналов static public $loggers = []; static public $f; static public $name; static public $lines = []; public function __destruct() { $this->log('Создался объект'); fputs(self::$f, join(self::$lines)); fclose(self::$f); } //открытый метод, предназначенный для создания объектов класса. //Создать новый объект можно только с его помощью public static function create($name, $fname) { //Вначале проверяем: возможно, объект для указанного имени //файла уже существует? Тогда его и возвращаем. if(isset(self::$loggers[$fname])) { return self::$loggers[$fname]; } //А иначе создаём полностью новый объект и сохраняем ссылку //на него в статическом массиве self::$name = $name; self::$f = fopen($fname, 'a+'); self::log('Создался объект'); return self::$loggers[$fname] = new self($fname); } public static function log($str) { $data1 = new DateTime('', new DateTimeZone('Europe/Moscow')); $hour = $data1->format('Y-m-d H:i:s'); $prefix = '['.$hour. ' ' . self::$name . ']'; $str = preg_replace('/^/m', $prefix, rtrim($str)); self::$lines[]=$str."\r\n"; } } $logger1 = FileLogger::create('test', "file.log"); $logger2 = FileLogger::create('test', "file.log"); $logger2 = FileLogger::create('test', "file.log"); ?>
@Dimon2x, Вы логи не смотрели? Никаких нотисов нет? У Вас тут ряд недочетов. Во первых, класс работает совсем не так, как Вы хотите. Я так думаю, что при отсутствии 49 и 50 строчек - результат будет такой же. Ошибки: PHP: $this->log('Создался объект');// обращение к статическому методу должно быть через self:: ... return self::$loggers[$fname]=new self($fname); // var_dump($logger1) что вернет? P.S.: Почему ООП Вы решили начать изучать со статики? Обычно первая тема в ООП - это наследование.
@Maputo В книге такая последовательность. Я облегчил класс. Почему мне выдаёт, только 1 элемент массива, а не от 1 до 3? PHP: <?php class FileLogger { static public $i = 1; static public $arr = []; private function __construct($num) { $this->arr[self::$i] = $num; self::$i++; } public static function create($num) { if(isset(self::$arr[$num])) { return self::$arr[$num]; } return self::$arr[$num] = new self($num); } public function getTime() { return $this->arr; } } $ob1 = FileLogger::create('1'); $ob2 = FileLogger::create('2'); $ob3 = FileLogger::create('3'); echo '<pre>'; print_r($ob3->getTime()); echo '</pre>'; ?>