PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (32): [1] 2 3 4 5 6 7 8 9 ... » В конец

> Найдено сообщений: 468
tato Отправлено: 14 Августа, 2015 - 04:27:05 • Тема: Не могу понять как использовать фреймворки! • Форум: Объектно-ориентированное программирование

Ответов: 9
Просмотров: 2416
DeepVarvar пишет:
И самое главное, что я хотел сказать.


0. Я не считаю верхом мастерства ООП и не говорил этого. Высосано из пальца.

1. Терпеть не могу когда отвечают как вы, то есть не отвечают. Человек не спрашивал любить ООП или нет, он недоумевает как использовать приобретенные знания.

2. Не думаю, что Вы в каждом новом проекте все пишете с нуля, есть наработки которые таскаете за собой, это и есть фреймворк. Ваш личный, но фреймворк.

3. Бизнесу срать как и что вы пишете, но не срать на ЗП сотрудников и скорость реализации.
Еще бизнесу надо, что бы новый сотрудник сел и работал, а не разбирался пол года, что и как работает. На фрилансе, когда один делает, другой поддерживает это еще критичнее.

4. Не точно выразился, если Вы пришли в проект, и там используют ту же симфони, то Вам с ходу понятна архитектура проекта. Задает в этом плане.

5. Никто не запрещает подключить другую ОРМ взамен AR.

----
ЗЫ. К Вам ваши слова относятся точно так же. Вы с другой стороны баррикады, но такой же убежденный в своей правоте. Слепо верите, что AR зло, что надо тоньше, что ООП не надо.
И даже не думаете, о том, что все зависит от задач и от проекта.

ЗЫЫ.
Цитата:
Да, ****, **** и в продакшн.

Да уж лучше стонать "Дайте денег, я работал. сматрите какую табличку нарисовал". Делал минутную задачу несколько часов и просрал, денег больше чем заработал, вот что это.
tato Отправлено: 04 Августа, 2015 - 13:20:52 • Тема: Не могу понять как использовать фреймворки! • Форум: Объектно-ориентированное программирование

Ответов: 9
Просмотров: 2416
1. Это соглашения которых придерживается сообщество фреймворка.
т.е. если вы попадете в другой проект где так же используется симфония будет сходу понятно, что где лежит и что как работает(в большей своей массе)

2. На первых парах делаем так: Задаем вопрос гуглу "Symfony что-то там". например
"Symfony валидация связанных моделей при сохранении"
читаем, что там люди пишут.

3. На самом деле фреймворк это куча проделанной работы которую можно использовать.
Например можно писать свой роутер для чпу, а можно юзать фрейм и там чпу будет работать из коробки. Или скажем аутентификация пользователей, или RBAC, или модели. Причем фишка в том, что еще будут какие-нибудь виджеты в слое представления которые будут работать с этими моделями(или провайдерами) из коробки. Сунул посты в GridWidget получил список. Делов на минуту.

4. фрейм задает архитектуру проекта, костяк.

5. Нестандартные задачи это хорошо. Только не понятно. Возможно Вы еще не знаете как это решается в выбранном вами фрейме. гуглим и будет счастье.

---
PS. Сам пишу с использованием Yii. Единственная нестандартная задача за все время, которую реально было геморно реализовывать это UNION. Его нет в ActiveRecord Yii.
tato Отправлено: 30 Июня, 2015 - 09:51:38 • Тема: Правильное ли построение архитеутуры mvc? • Форум: Объектно-ориентированное программирование

Ответов: 1
Просмотров: 887
в index.php только роутер, он парсит запрос и на его основе дергает нужный контроллер и нужное действие в нем

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. controllers/
  3.   DefaultController.php
  4.   PostController.php
  5.   ...
  6.  


PHP:
скопировать код в буфер обмена
  1.  
  2. class DefaultController {
  3.     public function actionIndex() {
  4.         ...
  5.     }
  6.  
  7.     public function actionAbout() {
  8.         ...
  9.     }
  10. }
  11.  



Получиться что-то такое:
PHP:
скопировать код в буфер обмена
  1.  
  2. class Route {
  3. ...
  4.     public function run() {
  5.         $this->parseUrl();
  6.         // теперь нам доступны след. члены
  7.         $controller = $this->getController();
  8.         $action = $this->getAction();
  9.         $params = $this->getParams();
  10.  
  11.         require_once("controllers/{$controller}.php");
  12.  
  13.         call_user_func_array([$controller, 'action' . ucfirst($action)], $params);
  14.     }
  15. ...
  16. }
  17.  



Модели вызываются уже в контроллере.
PHP:
скопировать код в буфер обмена
  1.  
  2. class PostController {
  3. ...
  4.     public function actionPost($id) {
  5.         $model = Post::findByPk($id);
  6.         $this->render('post_page', ['model'=>$model]);
  7.     }
  8. ...
  9. }
  10.  



ну а представление это набор шаблончиков:
views/post_page.php
[HTML]
<small><?php $model->created; ?></small>
<h4><?php echo $model->title; ?></h4>
<p><?php echo $model->body; ?></p>
[/HTML]
tato Отправлено: 24 Апреля, 2015 - 06:24:54 • Тема: Помогите написать запрос • Форум: Вопросы новичков

Ответов: 12
Просмотров: 770
[quote=LIME][/quote]
С чего это? Как Я понял записи в таком виде
Фильм1 Вася
Фильм2 Вася
Фильм1 Петя

И как запрос опа выберет Фильм1?
(Добавление)
И вообще как поле может иметь сразу два значения? Запрос опа в принципе не корректен
tato Отправлено: 24 Апреля, 2015 - 06:15:19 • Тема: Теоретический вопрос о моделях в MVC фреймворках • Форум: Вопросы новичков

Ответов: 13
Просмотров: 607
[quote=LIME][/quote]

Ну опять таки недостаток примера который Я привел.
Ладно, что бы было проще, это Yii way. На самом деле за findBy... нет прямой выборки из базы, там обращение к CCommandBuilder который по сути и является ресурсом или типо того.
tato Отправлено: 23 Апреля, 2015 - 08:24:26 • Тема: Теоретический вопрос о моделях в MVC фреймворках • Форум: Вопросы новичков

Ответов: 13
Просмотров: 607
Да хоспади.. Мы тут заказы реализовываем или размышляем в каком месте калькулировать результат.


LIME пишет:
хотя остается открытым вопрос что делать если у юзера более одного заказа?

PHP:
скопировать код в буфер обмена
  1.  
  2. $order  = Order::model()->find(); // ->findByPk(), ->findByAttributes(), etc...
  3. $orders = Order::model()->findAll(); // ->findAllByAttributes, etc...
  4. $new_order = new Order;
  5. $new_order->setAttributes([...]);
  6. $new_order->save();
  7.  


LIME пишет:
это на самом деле и есть модель Order
заполненная данными из нескольких таблиц
и представляющая самый настоящий объект реального мира, но не отдельную таблицу

Я бы не стал все это в кучу пихать, работать будет не удобно. Если мне нужны будут только orderItems Я не смогу их получить без самих ордеров.
К примеру мне нужен отчет по продажам продукта, выбрать из базы просто, а модели представляющей итемы отдельно нет.

Если бы итемы были просто связью многие ко многим, то да нет смысла модель заводить, но в примере выше они еще хранят количество заказных продуктов(еще там может быть денармолизована стоимость_продукта * количество, какой-нибудь статус, и т.д.).
tato Отправлено: 23 Апреля, 2015 - 02:45:57 • Тема: Теоретический вопрос о моделях в MVC фреймворках • Форум: Вопросы новичков

Ответов: 13
Просмотров: 607
[quote=LIME][/quote]

Как-то лень полностью реализацию писать, еще тут проверок параметров нет, валидации полей, и т.д.

Статичный, конструктор не принципиально. Просто для примера завел т.к. конструктор есть конструктор, а findByUser говорит, что вообще происходит.

Если много то стоит сделать findAllByUser().

OrderProvider и есть модель не из реального мира.
tato Отправлено: 22 Апреля, 2015 - 10:06:41 • Тема: Помогите написать запрос • Форум: Вопросы новичков

Ответов: 12
Просмотров: 770
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT title, count(*) t FROM kino WHERE actor = 'Vasya' OR actor = 'Petia' GROUP BY title HAVING t > 1
  3.  


это не сработает если есть дубликаты записей, вроде таких
Фильм1, Вася
Фильм1, Вася
Фильм1, Петя
Фильм2, Вася
Фильм2, Петя
tato Отправлено: 22 Апреля, 2015 - 09:48:31 • Тема: Преобразовать массив в строку • Форум: Вопросы новичков

Ответов: 30
Просмотров: 1187
exlant пишет:
ну если по стандартам psr, то да! Если по работоспособности кода, то нет!


Обязательно. Вы не объявили массив, Ваш интерпретатор Вам это простил. Отдали код заказчику, а там на сервере E_ALL и display_errors, на сайте заказчика нотис.
Он(Заказчик) думает, что это ошибка(онжнепрограммист) и дает Вам "по шапке", т.к. Вы дали ему не рабочий(с его точки зрения) код.

кататак.
tato Отправлено: 22 Апреля, 2015 - 09:32:25 • Тема: Функция и параметры • Форум: Вопросы новичков

Ответов: 3
Просмотров: 150
должно быть две функции getKino() и getActor() или если не хотите делать две функции, то

PHP:
скопировать код в буфер обмена
  1.  
  2. getInfo($table) {
  3.     $sql = "select * from `$table`";
  4. ...
  5. }
  6.  


Но так делать нельзя, т.к. это не безопасно. А вообще почитайте про ORM тогда поймете как надо.
tato Отправлено: 22 Апреля, 2015 - 09:02:48 • Тема: Теоретический вопрос о моделях в MVC фреймворках • Форум: Вопросы новичков

Ответов: 13
Просмотров: 607
PHP:
скопировать код в буфер обмена
  1.  
  2. class Order {
  3.             public
  4.                 $count,
  5.                 $price;
  6.  
  7.             public static function findByPk($pk) {
  8.                 $data = []; // load data from db by pk
  9.                 $model = new self;
  10.                 $model->count = $data['count'];
  11.                 $model->price = $data['price'];
  12.  
  13.                 return $model;
  14.             }
  15.  
  16.             public function getTotal() {
  17.                 return $this->count * $this->price;
  18.             }
  19. }
  20.  
  21. $order = Order::findByPk(1);
  22. echo $order->count;
  23. echo $order->getTotal();
  24.  


----
решил упростить
(Добавление)
А вообще зависит от ситуации.
Если что-то надо сделать с данными из одного объекта то смело делаем метод как в примере выше.

Если Есть кучка объектов(например Order, OrderItem, Product) они связаны между собой и надо что-то считать основываясь на всех трех объектах, то лучше сделать отдельную модель членами которой будут эти объекты и методы работы с ними.

Это вот фигово, что в статьях и книгах объекты стараются сопоставить с "объектами реального мира", потом проблемы у людей возникают.
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. class OrderProvider {
  3.     public
  4.         $order,
  5.         $orderItems,
  6.         $products;
  7.  
  8.     public static function findByUser($user)
  9.     {
  10.         $model = new self;
  11.         $model->order      = Order::findByUser($user);
  12.         $model->orderItems = OrderItem::findAllByOrder($this->order->id);
  13.         $model->products   = Product::findAllByItems($this->orderItems);
  14.  
  15.         return $model;
  16.     }
  17.  
  18.     public function getEachTotal() {
  19.         $result = [];
  20.  
  21.         foreach($this->orderItems as $id => $item) {
  22.             $result[$id] =
  23.                 $item->count * $this->products[$item->product_id]->price;
  24.         }
  25.  
  26.         return $result;
  27.     }
  28. }
  29.  
  30. $model = OrderProvider::findByUser(1);
  31. $model->getEachTotal();
  32.  
tato Отправлено: 30 Декабря, 2014 - 04:55:07 • Тема: Помогите составить 2 регулярки • Форум: Вопросы новичков

Ответов: 3
Просмотров: 174
event пишет:
tato, оно все картинки парсит, а нужно только та что в 1 посте)
(Добавление)
PHP:
скопировать код в буфер обмена
  1. preg_match_all('/ class="img-responsive" id="img-current_picture" border="0" src\=\"([^\"]*)\"/s', $view, $media);


Так пробую, ничерта не получается(



PHP:
скопировать код в буфер обмена
  1. preg_match_all('/class\=\"img\-responsive\"\sid\=\"img\-current\_picture\"\sborder\=\"0\"\ssrc\=\"([^\"]*)\"/s', $view, $media);
tato Отправлено: 29 Декабря, 2014 - 07:28:29 • Тема: Я решил отказаться от JQuery • Форум: Вопросы новичков

Ответов: 20
Просмотров: 1218
ПТО пишет:
Да. Я свободен. Без фреймворков намного удобнее


Вы меня извините, но это реплика "неосилятора" и новичка. Фреймворки значительно облегчают разработку.

Я прям вижу как Вы мучаетесь, пишете одно и тоже раз за разом, а потом
создаете тему "Своя CMS" или что-то подобное, где пишете, что все существующее какашка, а вот Ваше творение реально "крутяк".
не надо так...
tato Отправлено: 29 Декабря, 2014 - 03:34:32 • Тема: Помогите составить 2 регулярки • Форум: Вопросы новичков

Ответов: 3
Просмотров: 174
PHP:
скопировать код в буфер обмена
  1.  
  2. if (preg_match_all('/src\=\"([^\"]*)\"/s', $data, $m)) {
  3.     print_r($m);
  4. }
  5.  
tato Отправлено: 14 Октября, 2014 - 10:39:20 • Тема: MVC и индексация • Форум: Вопросы новичков

Ответов: 2
Просмотров: 156
Нет проблемм. MVC тут совсем ни причем. Лучше подумать о контенте, тайтлах и тд

Страниц (32): [1] 2 3 4 5 6 7 8 9 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB