PHP.SU

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

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

> Найдено сообщений: 305
nkl Отправлено: 14 Февраля, 2017 - 05:57:35 • Тема: Непонятка с namespace'ами • Форум: Объектно-ориентированное программирование

Ответов: 3
Просмотров: 2330
Нашел в чем проблема. Ребят, не забывайте зарегать свой корневой namespace в composer.json:
CODE (javascript):
скопировать код в буфер обмена
  1. "autoload": {
  2.         "psr-4": {
  3.             "App\\": "app/"
  4.         }
  5.     },

А потом выполните composer update или composer dump-autoload. И будет вам счастье.

P.S.
Я думал php.su уже стух, ан нет, живет и здравствует. Все бобра Радость
nkl Отправлено: 13 Февраля, 2017 - 22:22:58 • Тема: Непонятка с namespace'ами • Форум: Объектно-ориентированное программирование

Ответов: 3
Просмотров: 2330
Пардон. Я эксперементировал с именами методом научного тыка и немножко не то запостил, вот так все выглядит сейчас:
PHP:
скопировать код в буфер обмена
  1. #!/usr/bin/env php
  2. <?PHP
  3. namespace App;
  4.  
  5. require __DIR__ . '/../vendor/autoload.php';
  6.  
  7. use Symfony\Component\Console\Application;
  8. use App\Command\StatusTesterCommand;
  9.  
  10. $application = new Application();
  11.  
  12. $application->add(new StatusTesterCommand()); //ругается на эту строчку
  13.  
  14. $application->run();


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. namespace App\Command;
  4.  
  5. use Symfony\Component\Console\Command\Command as SymfonyCommand;
  6. use Symfony\Component\Console\Input\InputInterface as II;
  7. use Symfony\Component\Console\Output\OutputInterface as OI;
  8.  
  9. class StatusTesterCommand extends SymfonyCommand
  10. {
  11.  
  12.     protected function configure()
  13.     {
  14.         $this
  15.             ->setName('status-tester')
  16.             ->setDefinition('Simple status tester for thess addresses')
  17.             ->setHelp('This command can help you for simple test you application');
  18.     }
  19.  
  20.     protected function execute(II $i, OI $o)
  21.     {
  22.         dump(__FILE__);
  23.     }
  24.  
  25. }

А вот текст ошибки:
Цитата:
nkl@nkl-home ~/projects/crawler $ app/console.php list
PHP Fatal error: Uncaught Error: Class 'App\Command\StatusTesterCommand' not found in /home/nkl/projects/crawler/app/console.php:12
Stack trace:
#0 {main}
thrown in /home/nkl/projects/crawler/app/c onsole.php on line 12

(Добавление)
И даже пробую так сделать:
PHP:
скопировать код в буфер обмена
  1. #!/usr/bin/env php
  2. <?PHP
  3. namespace App;
  4.  
  5. require __DIR__ . '/../vendor/autoload.php';
  6.  
  7. use Symfony\Component\Console\Application;
  8.  
  9. //use App\Command\StatusTesterCommand;
  10.  
  11. $application = new Application('simple-tester', '0.0.1');
  12. $myCommand = new Command\StatusTesterCommand();
  13. //$application->add(new StatusTesterCommand());
  14.  
  15. $application->run();
  16.  

Один фиг, такая же ошибка:
Цитата:
PHP Fatal error: Uncaught Error: Class 'App\Command\StatusTesterCommand' not found in /home/nkl/projects/crawler/app/console.php:12
Stack trace:
#0 {main}
thrown in /home/nkl/projects/crawler/app/c onsole.php on line 12
nkl Отправлено: 13 Февраля, 2017 - 21:54:48 • Тема: Непонятка с namespace'ами • Форум: Объектно-ориентированное программирование

Ответов: 3
Просмотров: 2330
Всем добра. Имею такую структуру каталогов:
root/app
root/vendor
root/app/console.php
root/app/Command/StatusTesterCom mand.php
root/vendor/autoload.php

Содержимое файла console.php:
PHP:
скопировать код в буфер обмена
  1. #!/usr/bin/env php
  2. <?PHP
  3. namespace App;
  4.  
  5. require __DIR__ . '/../vendor/autoload.php';
  6.  
  7. use Symfony\Component\Console\Application;
  8. use App\Command\StatusTesterCommand;
  9.  
  10. $application = new Application();
  11. $application->add(new StatusTesterCommand());
  12.  
  13. $application->run();

Содержимое файла StatusTesterCommand.php:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. namespace \App\Command;
  4.  
  5. use Symfony\Component\Console\Command\Command as SymfonyCommand;
  6. use Symfony\Component\Console\Input\InputInterface as II;
  7. use Symfony\Component\Console\Output\OutputInterface as OI;
  8.  
  9. class StatusTesterCommand extends SymfonyCommand
  10. {
  11.  
  12.     protected function configure()
  13.     {
  14.         $this
  15.             ->setName('status-tester')
  16.             ->setDefinition('Simple status tester for thess addresses')
  17.             ->setHelp('This command can help you for simple test you pages on status code');
  18.     }
  19.  
  20.     protected function execute(II $i, OI $o)
  21.     {
  22.         dump(__FILE__);
  23.     }
  24.  
  25. }
  26.  

При выполнении app/console.php list выдает:
Цитата:
PHP Fatal error: Uncaught Error: Class 'App\Command\StatusTester' not found in /home/nkl/projects/crawler/app/console.php:10
Stack trace:
#0 {main}
thrown in /home/nkl/projects/crawler/app/c onsole.php on line 11


Что я делаю не так? На такой элементарщене запнулся и уже час сижу Нахмурился
nkl Отправлено: 07 Июня, 2015 - 11:38:21 • Тема: Symfony2 Doctrine. Что я делаю не так?????? За**ало! • Форум: CMS и фреймворки

Ответов: 10
Просмотров: 3356
armancho7777777 пишет:
nkl, Вам до Коханы (а точнее до того, что под капотом) как до Луны пешком.
УзБоГойДейсь, на Х!

Я против Коханы ничего не имею. Я ж говорю, толком не вникал в неё и не применял её на реальных проектах.
nkl Отправлено: 06 Июня, 2015 - 00:01:58 • Тема: Symfony2 Doctrine. Что я делаю не так?????? За**ало! • Форум: CMS и фреймворки

Ответов: 10
Просмотров: 3356
DeepVarvar опыт использования фреймворка на практике. Акромя симфони я больше ничего толком и не юзал. Пару лет назад пробовал Кохану пощупать, но до реального применения дело так и не дошло. Варились так сказать в собственном дерьме. В итоге, когда оно (дерьмо) стало к горлу подступать, решили перейти на фреймворк. Итог: первые 3 месяца плакали и кололись и уже было решили выкинуть этот "кактус", как вдруг на одном из старых самописных проектов пришлось не хило так функционала допилить с преферансом и барышнями. Документации естено никакой, просто куча папок и файлов с содержимым наподобие того что вы привели выше. По плану, на преферанс и барышень я думал потрачу неделю, но т.к. проект не открывался больше года, мне неделю только пришлось раздуплять что там к чему и почему. В итоге, лично я пришел к выводу, что без более менее хоть какой-то стандартизации или хотя бы скудной документации долговременное сопровождение проектов на PHP невозможно. И что фреймворк, хоть он и кактус, а грызть надо. Плюс, большая часть дерьма уже написана за вас, просто подключайте его через компостер и юзайте. Причем дерьмо так-то хорошо написано, с эксепшенами и другими полезными штуками, только маны кури. С фреймворком я забыл половину базовых функций PHP, но зато хорошо выучил методы, итерфейсы и вызовы различных готовых бандлов, как например Guzzle, SonataAdmin, KNPPagination, KNPMenu, Monolog Logger и етц. Более не нужно писать код, все написано за меня. Нужно писать только в экстраординарных случаях и то, тебе все на блюдечке поднесено с голубой каемочкой, хочешь через PDO с базой работаешь, хочешь через DQL, хочешь через ORM, на худой конец хоть через Doctrine QB. Не нужно без конца крутить регулярки, что бы роутер заработал как надо. Хочешь новый урл, запихиваешь новый конфиг в роутинг и вуаля - вот тебе новый рабочий урл попадает в какой надо файл с нужными условиями, хоть POST, хоть GET и еще куча услвий для его работы настраивается. Да там даже вебсокеты на автомате юзаются! Я стал настолько ленив, что даже для сайта-визитки ставлю symfony (ну вернее как, она у нас одна стоит и управляет сразу 10 такими сайтами, причем добавление нового занимает пару минут)!
nkl Отправлено: 05 Июня, 2015 - 19:14:23 • Тема: Symfony2 Doctrine. Что я делаю не так?????? За**ало! • Форум: CMS и фреймворки

Ответов: 10
Просмотров: 3356
digi пишет:
что говорит

CODE (text):
скопировать код в буфер обмена
  1. app/console doctrine:schema:validate

Спасибо за эту команду, не знал про неё. Выявилось одно несоответствие Entity с БД. Буду юзать её теперь. Но ошибка возникала не из-за этого.

Действительно, проблема была с конфигом маппинга. Сделал по ссылке Panoptik'а и заработало! Но раньше ведь я не трогал этот конфиг, все работало и с автомаппингом. Правда до этого версия была Symfony 2.4, а сейчас 2.7 вроде если мне не изменяет память. Когда они там успели уже все поломать?

P.S.
Почему на форуме нет отдельного раздела для Symfony? Может кто подскажет годный русскоязычный форум по этому фреймворку? Это мой первый реальный опыт использования фреймворков на практике. И мне он нравиться. Проект стандартизирует афигенно, это именно то, чего всегда нехватало вольному PHP)
nkl Отправлено: 04 Июня, 2015 - 19:40:27 • Тема: Symfony2 Doctrine. Что я делаю не так?????? За**ало! • Форум: CMS и фреймворки

Ответов: 10
Просмотров: 3356
Всем привет. Я споткнулся на банальной штуке, сохранение данных в БД. Хотя я 100 раз уже это делал!
Взгляните на кусок кода:...
PHP:
скопировать код в буфер обмена
  1. $event = new LineEvent();
  2. $event->setEventId($row->event_id);
  3. $event->setSportId($row->sport_id);
  4. $event->setCountryId($row->country_id);
  5. /* ... */
  6. $em = $this->container->get('doctrine')->getManager();
  7. $em->persist($event);
  8. $em->flush();

Мне вылетает экспешн! Будь он неладень! Нахмурился
Цитата:

[Doctrine\Common\Persistence\Mapping\MappingException]
The class 'Test\LineBundle\Entity\LineEvent' was not found in the chain configured namespaces

И все бы ничего, НО (начало файла):
PHP:
скопировать код в буфер обмена
  1. namespace Test\LineBundle\Command;
  2.  
  3. use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
  4. use Symfony\Component\Console\Input\InputInterface;
  5. use Symfony\Component\Console\Input\InputOption;
  6. use Symfony\Component\Console\Output\OutputInterface;
  7. use GuzzleHttp\Client;
  8. use Test\LineBundle\Entity\LineEvent; //обратите внимание! Всё use'aется о чем собственно реч в эксепшне и идет!!!
  9. use Test\LineBundle\Entity\LineOdd;
  10.  
  11. class LineCommand extends ContainerAwareCommand
  12. {      
  13. /* ... */
  14. }

Короче я втупике! Белый флаг
(Добавление)
P.S.
Ругается именно на строку
nkl Отправлено: 07 Мая, 2015 - 11:09:12 • Тема: Как отыскать полностью совпадающие элементы массива • Форум: Вопросы новичков

Ответов: 8
Просмотров: 400
Мелкий пишет:
Все строки в таблице, для которых сочетание полей book_id, name_in_book по этой таблице не уникально.

Ок. Спасибо. Достаточно быстро работает.
nkl Отправлено: 07 Мая, 2015 - 10:57:54 • Тема: Как отыскать полностью совпадающие элементы массива • Форум: Вопросы новичков

Ответов: 8
Просмотров: 400
Мелкий пишет:
Вычитывать 100 лямов записей сама по себе идея дурацкая.

По индексу book_id & name_in_book должен работать достаточно хорошо:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT /**/ FROM tablename JOIN (
  2. SELECT book_id, name_in_book FROM tablename GROUP BY book_id, name_in_book HAVING count(0) > 1
  3. ) dup USING(book_id, name_in_book);

Что возвращает это запрос? Дублированные записи? Или что?
nkl Отправлено: 07 Мая, 2015 - 10:37:14 • Тема: Как отыскать полностью совпадающие элементы массива • Форум: Вопросы новичков

Ответов: 8
Просмотров: 400
Так этот массив из базы и приходит. Пробовал средствами СУБД искать. Окончания работы запроса я так и не дождался. По памяти и скорости процессора беспокоиться не стоит. У нас VDS на ксеоне с 16 гигами ОЗУ)
nkl Отправлено: 07 Мая, 2015 - 09:50:33 • Тема: Как отыскать полностью совпадающие элементы массива • Форум: Вопросы новичков

Ответов: 8
Просмотров: 400
Всем привет, имеется массив вида:
PHP:
скопировать код в буфер обмена
  1. $array = [
  2.         1 => ['id' => 0,
  3.                 'book_id' => 18,
  4.                 'name_in_book' => 'Bla-bla-bla'],
  5.         2 => ['id' => 1,
  6.                 'book_id' => 17,
  7.                 'name_in_book' => 'Bla-bla-bla'],
  8.         3 => ['id' => 2,
  9.                 'book_id' => 19,
  10.                 'name_in_book' => 'Bla-bla-bla'],
  11.         4 => ['id' => 3,
  12.                 'book_id' => 20,
  13.                 'name_in_book' => 'Bla-bla-bla'],
  14.         5 => ['id' => 4,
  15.                 'book_id' => 20,
  16.                 'name_in_book' => 'Bla-bla-bla'],                              
  17. ];

Массив этот размером over 100 000 000 строк. Мне нужно найти в нем элементы, в которых book_id и name_in_book полностью совпадают. В данном примере будут совпадающими элементы с id 4 и 5 массива $array;
Как это сделать быстро легко и непринужденно? Улыбка
nkl Отправлено: 12 Марта, 2015 - 07:41:03 • Тема: Помогите разобраться с Symfony\DomCrawler и XPath • Форум: CMS и фреймворки

Ответов: 0
Просмотров: 2029
Доброго времени суток, коллеги! Со вчерашнего дня разбираюсь с этим икспасом. Хм

Я так понимаю, что симфонивский The DomCrawler Component - это ни что иное, как обертка над \DomDocument() и \DomXPath(), следовательно, кто знает эти либы, тот сможет мне помочь.

Поставил значит консольку для FireBag'а - FirePath (оч. удобная штука кстати, советую). Для примера взял одну из своих страничек. Пробую делать XPath-запросы. Получение одного элемента - не проблема, а вот получение массива элементов которые подпадают под один запрос - это да, это вертяк. Вот мой XPath-запрос:
PHP:
скопировать код в буфер обмена
  1. $elements = $crawler->filterXPath("html/body/div[2]/header/div/div[2]/ul/li");

Там в списке 11 итемов li, в $elements как положенно оказывается такой массив:
Спойлер (Отобразить)

Но, когда я пытаюсь перебрать его в цикле:
PHP:
скопировать код в буфер обмена
  1. foreach($elements as $domElemet){
  2.                 dump($domElemet->attr('class'));
  3.        }

Сифони выбрасывает такой эксепшен:
Цитата:
[Symfony\Component\Debug\Exception\UndefinedMethodException]
Attempted to call method "attr" on class "DOMElement".

А этот метод:

и вовсе возвращает 0. В офф документации в первом же примере указано, что nodeName - это атрибут экземпляра класса $domElement, а чуть ниже он приводиться уже как метод $domElement->nodeName(). Если обратиться к свойству nodeName то возвращает как положено 11 раз "li", в общем я ничего не пойму, каша какая-то в голове.

Что я делаю не так? Огорчение
(Добавление)
Все разобрался, там в документации чуть ниже есть такой метод (анонимная функция):
PHP:
скопировать код в буфер обмена
  1. $nodeValues = $crawler->filter('p')->each(function (Crawler $node, $i) {
  2.     return $node->text();
  3. });

Это работает! Я получил нужный мне текст.
nkl Отправлено: 12 Марта, 2015 - 07:16:53 • Тема: Kohana - регистрация • Форум: CMS и фреймворки

Ответов: 4
Просмотров: 1465
Мой тебе совет. Забудь Кохану - он труп. Огорчение
nkl Отправлено: 04 Марта, 2015 - 11:35:00 • Тема: Решение нестандартных задач на Symfony • Форум: CMS и фреймворки

Ответов: 6
Просмотров: 1964
digi пишет:
Видимо в сущности комента надо сделать геттер который будет выводить либо автора, либо юзера, а в шаблончике если юзер выводить ссылку на него.

ЗЫ: с сонатой не работаю Улыбка

Хм. Интересное решение, но мы сделали немножко по другому. Для этого поля делаем свой template, а в качестве шаблона используем заготовку для бандла, которая определяет, нужно сделать ссылку на редактирования пользователя или нет. Там просто проверяем if object.authorGuestName is not empty:
CODE (htmlphp):
скопировать код в буфер обмена
  1. {% block field %}
  2.         {% if object.authorGuestName is not empty %}
  3.                 {{ object.authorGuestName }}
  4.         {% else %}
  5.                 {% if value %}
  6.                 {% if field_description.hasAssociationAdmin and field_description.associationadmin.hasRoute('edit') and field_description.associationadmin.isGranted('EDIT', value) %}
  7.                     <a href="{{ field_description.associationadmin.generateObjectUrl(field_description.options.route.name, value, field_description.options.route.parameters) }}">{{ value|render_relation_element(field_description) }}</a>
  8.                 {% else %}
  9.                     {{ value|render_relation_element(field_description) }}
  10.                 {% endif %}
  11.             {% endif %}
  12.         {% endif %}
  13. {% endblock %}

а в случае else используется вывод этого поля как это стандартно организовано в \vendor\sonata-project\admin-bundle\doctrine-orm-admin-bundle\Resources\views\CRUD\list_orm_one_to_many.html.twig
nkl Отправлено: 27 Февраля, 2015 - 08:47:51 • Тема: Укажите направление по работе с API • Форум: Вопросы новичков

Ответов: 2
Просмотров: 127
Это API в формате json.
Получаешь этот "контент" при помощи cURL, делаешь json_decode() и пишешь получившийся массив в базу.

Страниц (21): [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