Статьи

Что случилось, когда мы поговорили о PHP с экспертами

В прошлый четверг я немного нарушил традицию и вечером провел сеанс « Разговор с экспертами» (внизу), что сделало его более дружественным по отношению к часовым поясам для нашей британской аудитории. Это также означало, что я мог поменять свой обычный кофе на вино, что, вероятно, сделало сеанс более гладким. Предметом был PHP, а нашим экспертом была Лорна Митчелл, преподаватель объектно-ориентированного PHP и соавтор PHP Master: написание передового кода .

Вот список полезных ресурсов, которые вышли из сессии:

Что такое PHP? http://en.wikipedia.org/wiki/PHP

Отличный курс для начинающих по PHP https://learnable.com/courses/php-mysql-web-development-for-beginners-13

PHP-клиент Пола для Beanstalkd https://github.com/pda/pheanstalk

Зачем использовать фреймворки? http://www.phpandstuff.com/articles/top-10-reasons-why-you-should-use-a-php-framework

Структура модульного тестирования http://www.phpunit.de/

Использование композиции, а не наследования http://en.wikipedia.org/wiki/Composition_over_inheritance

Генераторы статических сайтов:
http://middlemanapp.com/
http://www.phrozn.info/en/
http://sculpin.io/

Отличный клиент SSH http://www.chiark.greenend.org.uk/~sgtatham/putty/

Найти стенограммы прошлых сессий можно здесь http://www.sitepoint.com/forums/showthread.php?873280-Transcripts-From-Past-Sessions

Подпишитесь на уведомления по электронной почте о будущих сессиях здесь https://www.facebook.com/sitepoint/app_115462065200508

Что касается будущих сессий, то в следующем году мы поговорим с экспертами о начале работы в отрасли с разработчиками SitePoint Джудом Аакджером и Беном Аксником из «Топора». Это будет происходить в среду, 1 мая, в 14:00 по тихоокеанскому времени, или вы можете узнать, который час будет у вас, здесь .

Если вы пропустили сеанс в прошлый четверг, но хотите узнать, что произошло, вы можете прочитать всю стенограмму здесь:

HAWK HAWK
Хорошо, так как Лорна здесь, мы можем начать. Формат здесь, по сути, бесплатный для всех — если у кого-то есть вопрос, то выкиньте его сейчас.
Я буду следить за вопросами и следить за тем, чтобы на них все отвечали.
mycritte … mycritter
мы можем начать с фреймворков?
SEO2013 SEO2013
Можем ли мы начать с — Что такое PHP? 🙂
HAWK HAWK

Конечно @mycritter — у вас был конкретный вопрос, касающийся фреймворков?

Здесь вы идете @ SEO2013 http://en.wikipedia.org/wiki/PHP
Кстати, завтра я выложу полную стенограмму этой сессии на sitepoint.com вместе с ресурсами
mycritte … mycritter
хорошо, какова реальная выгода от использования fw и которые действительно подходят для твердого разработчика?
SEO2013 SEO2013
Спасибо за ссылку. Сколько времени в среднем занимает изучение PHP?
LornaJan … LornaJane
@ mycritter это отличный стартовый вопрос!
Джерри Джерри
@SEO, с какими языками прог вы сейчас знакомы?
SEO2013 SEO2013
Нет, к сожалению, я уверен, что это не тот ответ, который вы хотели: / Я бы очень хотел узнать, хотя.
LornaJan … LornaJane
Фреймворки дают вам структуру, и они также дают вам быстрый старт для вещей, которые одинаковы в каждом проекте, у них обычно есть маршрутизация, логирование, шаблонирование… и тому подобное. Таким образом, они сохраняют некоторые повторяющиеся работы для вас
HAWK HAWK
Я также хотел бы добавить последний вклад Лорны в сеть Learnable / SitePoint, которая является ее курсом по объектно-ориентированному PHP https://learnable.com/courses/object-oriented-php-2734
mycritte … mycritter
@ seo2013 ты просто должен получить книгу
LornaJan … LornaJane
Фреймворки также предоставляют общий способ выполнения задач, что облегчает привлечение нового разработчика в команду, и этот человек гораздо быстрее приступает к проекту.
HAWK HAWK
@ SEO2013 Это отличный курс для начинающих https://learnable.com/courses/php-mysql-web-development-for-beginners-13
LornaJan … LornaJane
@mycritter Я бы сказал, что выгода в основном для разработчиков, а также для скорости и качества разработки — гораздо больше, чем разница в конечном продукте. Рамки о том, чтобы добиться цели.
mycritte … mycritter
@lornaJane, вы используете готовый фреймворк или платформу вроде cms для своего веб-разработчика?
HAWK HAWK
Добро пожаловать всем, кто только что присоединился к нам. Мы LornaJane — наш эксперт сегодня, и в настоящее время мы говорим о преимуществах использования фреймворков.
LornaJan … LornaJane
Что касается того, какие рамки являются прочными — у них всех есть свои сильные стороны. Например, ZF2 и Symfony2 являются всеобъемлющими, но они могут быть довольно тяжелыми, если вы создаете что-то простое. Существуют легкие фреймворки, в которых вам нужно будет выполнить часть работы самостоятельно, например, Silex или Slim. И еще есть фреймворки, которые больше нацелены на дружелюбие, чем на производительность — это может быть что-то вроде CakePHP
LornaJan … LornaJane
@mycritter Я консультант, поэтому работаю с тем, что есть у моего клиента. Мои личные проекты были смесью, немного ZF, немного Slim, в зависимости от того, что я строил. Надеюсь, что это поможет дать вам некоторые идеи!
Утес Утес
Быстрый вопрос о фреймворках?
LornaJan … LornaJane
@TheCliff пойти на это
Утес Утес
Мне интересно, тяжелые фреймворки увеличивают нагрузку на мой сервер?
для рендеринга и вещей?
Утес Утес
скорость отображения кода и так далее.
MikeH MikeH
Лорна, тебе приходится тратить много времени на то, чтобы каждый проект изучал свою среду, прежде чем стать продуктивным, или есть достаточно маленький пул общих структур, которые ты обычно охватываешь?
LornaJan … LornaJane
@TheCliff да, это конечно может. Фреймворки могут выполнять большую часть работы в фоновом режиме, что облегчает и ускоряет разработку. Для очень производительного приложения полнофункциональный фреймворк, вероятно, не тот инструмент. Для 95% сайтов это абсолютно нормально
ridinQwe … ridinQwerty
Php & Mysql «Новичок ниндзя» — довольно хорошая отправная точка @ SEO2013
Утес Утес
Отличный ответ, спасибо!
Paul.Ann … Paul.Annesley
@TheCliff: как правило, дополнительная нагрузка незначительна, и если у вас достаточно трафика, чтобы создать проблему, вы можете позволить себе масштабировать сайт на нескольких серверах. Преимущество написания меньшего / более легкого кода быстрее с каркасом перевешивает эффективность выполнения (в).
Джерри Джерри
Впечатления от Twitter Bootstrap по сравнению с другими фреймворками? Это единственный, который я использовал, в основном потому, что он был первым, который я нашел, и его было довольно легко подобрать
LornaJan … LornaJane
@MikeH Многие фреймворки имеют хорошую документацию и множество общих идей. Например, многие из них являются MVC, у них есть маршрутизация, инструменты шаблонов похожи, даже если не совсем одинаковы… и я очень хорошо отлаживаю после большой практики! Поэтому я обычно ныряю и учусь так.
HAWK HAWK
Я должен представить Пола Аннесли. Пол — старший разработчик в группе SitePoint.
Paul.Ann … Paul.Annesley
Важным аспектом использования инфраструктуры является безопасность, которую можно обеспечить; экранирование по умолчанию переменных в выводе HTML, дезинфекция пользовательского ввода, обработка распространенных ошибок, цитирование / экранирование запросов к базе данных для смягчения внедрения SQL и т. д.
LornaJan … LornaJane
@theCliff: Это хороший момент от @ Paul.Annesley — в основном время разработчика будет НАМНОГО дороже, чем ваши расходы на хостинг. Таким образом, это чистый выигрыш, чтобы использовать платформу и получить ваш продукт
Paul.Ann … Paul.Annesley
Обратной стороной этого является то, что вы наследуете любые уязвимости безопасности, присутствующие в используемой платформе, что время от времени происходит во всех инфраструктурах.
LornaJan … LornaJane
@Jerry Начальная загрузка Twitter — это скорее фреймворк, это обсуждение больше о серверных фреймворках, написанных на PHP. Кривая обучения отличается для разных структур, но, как я уже сказал, многие из них имеют отличные документы
MikeH MikeH
Пол — как старший разработчик, вы становитесь более специализированным или более широким в языках, которые вы используете на стороне сервера?
BrandonK … BrandonKasteler
@ Paul.Annesley В этой заметке, для кого-то, кто относительно новичок в PHP, вы бы сказали, что преимущества от встроенной безопасности перевешивают те, которые потенциально пропускают определенные аспекты в нашем собственном коде?
Джерри Джерри
Знаете ли вы какие-либо хорошие сравнения плюсов / минусов для различных структур?
mycritte … mycritter
@lornaJane, по основам, у вас есть хорошие рекомендации по обеспечению безопасности нашего кода для начинающих. способы опередить хакеров.
Paul.Ann … Paul.Annesley
@MikeH: Оба 🙂 Я многое узнал о языке PHP и его инструментах. Я сделал это, взяв на себя побочные проекты, такие как создание PHP-клиента для beanstalkd: https://github.com/pda/pheanstalk … Я также изучаю другие языки, когда у меня есть время, и в основном пишу на Ruby в эти дни.
LornaJan … LornaJane
@mycritter: встроенные функциональные возможности фреймворков действительно могут помочь с безопасностью, поскольку они будут включать экранирование базы данных и фильтрацию входных значений и вещей
Paul.Ann … Paul.Annesley
@BrandonKasteler: Я, конечно, выбираю преимущества фреймворка по сравнению с попыткой сделать все самому … последнее приводит к попытке создать собственную фреймворк, и у вас не остается времени на то, что вы намереваетесь создать.
LornaJan … LornaJane
@mycritter: мой главный совет — использовать расширение Filter в PHP для входящих переменных. Сделайте это требование, и это будет вознаграждать вас 🙂
Утес Утес
Вы бы порекомендовали PHP-кодерам перейти в стиль программирования Frameworks — MVC? Я программирую на PHP уже 5 лет. Одна из причин, по которой я не пошел в Frameworks, заключается в том, что за последние пару лет я собрал отличный файл «функций», в котором есть тонны вещей, которые я могу использовать во время кодирования для ускорения работы. Мне нужно выяснить, имеет ли фреймворк то, что выполняют мои функции, чтобы я мог рассмотреть его использование. Я действительно не уверен, что на самом деле делает фреймворк для ускорения написания кода. По большей части мне просто нужны базовые Mysql_query, циклы while и базовая математика. Поможет ли фреймворк так сильно, чтобы ускорить основные команды php?
LornaJan … LornaJane
@Jerry: сравнение фреймворков довольно сложно, все они нацелены на выполнение разных заданий, поэтому во многих случаях сравниваются яблоки с апельсинами. Я не знаю ни одного хорошего ориентира
LornaJan … LornaJane
@TheCliff: Я бы сказал, что для действительно простого сайта это, вероятно, не имеет значения. Как только вы начнете создавать вещи, которые будут более динамичными, они действительно облегчат вашу жизнь — особенно когда вы пройдете обучение.
HAWK HAWK
Всем, кто только что присоединился, добро пожаловать. В настоящее время мы говорим о фреймворках, но если у вас есть вопрос по любому аспекту PHP (или ООП PHP), пожалуйста, ответьте на него на любом этапе.
Paul.Ann … Paul.Annesley
У меня есть общее замечание, которое я хотел бы добавить: PHP начал как способ встраивания фрагментов кода в HTML; делая это шаблонным языком. И такое использование — не плохой способ начать изучать это. Но чтобы создать серьезный сайт, нужно научиться отделять шаблоны от логики сайта. Фреймворки делают это намного проще (они предоставляют модели, контроллеры и т. Д., Которые являются чистым PHP и не содержат HTML).
Утес Утес
Можете ли вы дать мне быстрый пример того, как фреймворки экономят время? Как тип команды или что-то, с чем это поможет.
BrandonK … BrandonKasteler
@LornaJane Добавьте в закладки различные фреймворки, о которых вы упомянули, чтобы посмотреть позже. Спасибо за эту информацию.
Утес Утес
или сайт, который показал бы мне, почему использование фреймворков экономит время и как.
MikeH MikeH
Лорна — ты работаешь в основном с большими пользовательскими приложениями или все еще на сайтах (WordPress | Concrete | Magento | LemonStand | Joomla)?
HAWK HAWK
LornaJan … LornaJane
@TheCliff самый простой пример — такие вещи, как построение форм, вы определяете форму, а инфраструктура выполняет проверку на стороне клиента, проверку на стороне сервера, обрабатывает сбои, отображает саму форму и возвращает вам действительные данные, когда это будет сделано. Сохраняет много кода повторения для каждой формы в каждом проекте — и вы никогда не забудете проверить одно поле
mycritte … mycritter
@lornaJane, большинство моих клиентов хотят получить смс. Есть отличные варианты там. рекомендации по переходу от них против строительства собственности?
LornaJan … LornaJane
@Cliff: также такие вещи, как библиотеки баз данных уже настроены, и библиотеки журналов
@BrandonKasteler это мое удовольствие, удачи с этими
Утес Утес
@lornaJane, это может быть очень полезно. Я смотрю на эту страницу сейчас @hAWK
mycritte … mycritter
@mikeH, только что увидел твой вопрос. великие умы думают одинаково 😉
LornaJan … LornaJane
@MikeH: я почти полностью работаю над пользовательскими приложениями, созданными на основе фреймворков. У меня WordPress в качестве моего блога, но это все (и я не создавал его сам!). Я — специалист по API, поэтому я больше работаю с интегрированными системами, и они обычно представляют собой специализированные приложения на фреймворке, просто потому что это лучший инструмент для этих конкретных задач.
Oatley Oatley
Привет Лорна: При написании класса всегда важно следовать шаблону дизайна. Многие из моих классов, кажется, не следуют шаблону дизайна вообще. Это плохая вещь?
LornaJan … LornaJane
@mycritter: переход на существующую CMS с открытым исходным кодом и ее настройка означает, что вы получаете всю работу, выполненную в существующей, бесплатно, ваш клиент должен платить только за дополнительные биты, характерные для его системы, и вам нужно только делать интересные и необычные кусочки развития, а не повторять себя все время
mycritte … mycritter
@ oatley, ооо, теперь мы входим в забавные вещи 😉
LornaJan … LornaJane
такие вещи, как Drupal, имеют множество расширений и будут постоянно предлагать вам обновления для системы безопасности — и ваш собственный код не сделает этого без вашей работы 🙂
MikeH MikeH
Специализация порождает продуктивность ИМО. Необходимость часто менять местами фреймворки, библиотеки или CMS приводит к большим накладным расходам и требует гораздо больше времени на исследования
LornaJan … LornaJane
@ Oatley: совсем не плохо. Слишком много шаблонов дизайна — это плохо. Несоблюдение шаблонов не является проблемой. На самом деле, если вы прочитаете учебник по шаблонам проектирования, вы, вероятно, найдете гораздо больше знакомых шаблонов, чем ожидаете. Суть в том, что мы разработчики, а это значит, что мы решаем проблемы. Неважно, имеют ли эти решения сложные названия или нет.
ridinQwe … ridinQwerty
Я все еще действительно новичок в PHP и еще не коснулся фреймворка, но разве это не будет похоже на сравнение с jquery и javascript? Грязная работа упростилась до управляемых решений?
MikeH MikeH
@ridinQwerty в широком смысле — да
LornaJan … LornaJane
@MikeH Это не мой опыт, я нахожу полезным как с точки зрения достижения цели, так и с точки зрения качества кода, чтобы использовать существующие библиотеки, доступные в мире открытого исходного кода. Переключение между ними — тяжелая работа, но оно того стоит, по крайней мере, для меня
Утес Утес
Спасибо за эту страницу @hAWK
LornaJan … LornaJane
@RidinQwerty, это хорошая аналогия, да 🙂 Некоторые фреймворки — это немного больше, чем несколько библиотек — и вы можете добавить еще несколько, чтобы сделать то, что вам удобно. Но они просто там, чтобы обернуть вещи и сделать их быстрее использовать
Paul.Ann … Paul.Annesley
@ridinQwerty: главное отличие; jQuery — это библиотека, которую вы вызываете из своего кода. Фреймворк обычно определяет, куда вы должны поместить код, чтобы фреймворк мог вызывать его при необходимости.
HAWK HAWK
@TheCliff np
MikeH MikeH
@LornaJane Я согласен строить их основы. Мне просто трудно идти в ногу с несколькими системами.
ccovey ccovey
Для тех из нас, у кого нет проверки кода и т. Д. Есть ли способы узнать, когда наш ООП-код больше не является процедурным кодом в классе? Я чувствую, что мой хаха.
Утес Утес
@lornaJane, так для новичков, с какой платформой вы бы порекомендовали начать? У меня было множество людей, которые говорили мне, что Yii — лучший за последнее время. Что вы думаете о том, что такое обучение, простота использования и т. Д.?
MikeH MikeH
@ccovey <? php class Ccovey {public function__construct () {$ this-> isProduceduralInAClass = false; }}?>
LornaJan … LornaJane
@ccovey: длина метода обычно подсказка. Если ваши методы действительно длинные, то вы, вероятно, все еще работаете в довольно процедурном стиле. Хотя некоторые методы всегда заканчиваются долго — например, действие контроллера для сложной страницы
Oatley Oatley
Помимо вашей собственной превосходной книги по изучению сайта (о которой я узнал у вас на одном из ваших отличных учебных курсов, которые я посещал в Лидсе NTI!), Какие другие книги ООП вы бы порекомендовали?
MikeH MikeH
@ccovey… проблема решена
Paul.Ann … Paul.Annesley
ccovey: один из способов — это написать модульные тесты для вашего кода … если вам это удастся, это, вероятно, достаточно приличный OO. Если это действительно больно, может быть, ему нужно рефакторинг, чтобы быть больше ОО 🙂
LornaJan … LornaJane
@TheCliff: Я не использовал Yii, но у меня были люди, которым нравился и передний, и задний конец. Я обычно рекомендую людям освоиться с ООП, а затем попробовать что-то вроде CakePHP — это не слишком сложная структура, но она построена умными людьми и за ней стоит потрясающее сообщество.
MikeH MikeH
@ Paul.Annesley говоря о том, что такое основа для модульного тестирования?
ccovey ccovey
Я пытался держать методы под 20-ю строчками, если это возможно, и начал тестирование моего недавнего стороннего проекта.
Утес Утес
классно. Я посмотрю на это!
ccovey ccovey
MikeH, если бы я знал это много лет назад 🙂
LornaJan … LornaJane
@Oatley: PHP Master — единственный ресурс, который вам когда-либо понадобится! Если серьезно, то там не так много книг по ООП. Как только вы достигнете уровня PHP Master, вы лучше будете читать статьи блога, поэтому убедитесь, что вы подписаны на phpdeveloper.org и сайты Sitepoint, включая phpmaster.com — вот куда уходит большая часть продвинутого контента. и это правильно в курсе. Многие из этих книг уже до версии PHP 5.3, хотя я вижу, что выходят обновления
ridinQwe … ridinQwerty
@ Paul.Annesley У меня, вероятно, будет некоторое время, прежде чем я смогу проглотить то, что ты только что сказал. Я до сих пор бездельничаю с заполнением таблиц данными, которые я создаю и проверяю… Другими словами, не слишком далеко. Я только освоился с интерфейсом, так что пришло время прогрессировать. У меня есть первые две книги, которые вы предлагаете, и я наслаждаюсь ими. Тот на ООП будет следующим.
LornaJan … LornaJane
@ccovey: для меня это звучит так, будто ты уже на правильном пути, отличная работа
HAWK HAWK
Полагаю, вы, ребята, знаете о курсе ОВ Лорны… https://learnable.com/courses/object-oriented-php-2734
ridinQwe … ridinQwerty
Конечно да
Paul.Ann … Paul.Annesley
@MikeH: извините за задержку … Я считаю, что PHPUnit, где он находится. http://www.phpunit.de/
В прошлом я в основном использовал SimpleTest, но я не рекомендую его и не позволяю имени обмануть вас … это не проще 🙂
MikeH MikeH
Хорошо. Я начал баловаться с этим несколько лет назад.
LornaJan … LornaJane
И то, что сказал @HAWK — если вы ищете введение в ООП, у меня сейчас есть курс Learnable, в котором я рассказываю (и рисую картинки!) И показываю код, который, я надеюсь, поможет. Для тех, кто лучше учится чтению, в главной книге PHP есть глава ООП, а также главы, посвященные шаблонам проектирования и базам данных, с использованием PDO, который также является объектно-ориентированным.
Paul.Ann … Paul.Annesley
Я определенно рекомендую научиться писать модульные тесты, если вы хотите заниматься объектно-ориентированным программированием.
mycritte … mycritter
@lornaJane, мы говорим о применении ООП к PHP или о внедрении новых мощных версий PHP?
Oatley Oatley
Привет, Лорна. Кстати, спасибо за вашу помощь. Еще один для вас Когда я пишу классы, я никогда не могу расширить их. В примерах я постоянно вижу такие вещи, как кошка вытягивает животное, что имеет смысл. Но в реальном мире я никогда не буду строить «кошку»! Скажем, я создаю что-то вроде веб-сайта, что может быть хорошим примером использования расширений здесь?
ridinQwe … ridinQwerty
Мне пришлось поменять свой адрес электронной почты, чтобы присоединиться, потому что там говорилось, что кто-то его использует, на не связанной, но связанной ноте. ?
LornaJan … LornaJane
@mycritter Я могу ответить на любые ваши вопросы
MikeH MikeH
@ridinQwerty то же самое со мной. Вспомнил мою электронную почту из чата несколько месяцев назад и не позволил мне войти
Paul.Ann … Paul.Annesley
Одна и та же. Поддельные адреса электронной почты со всех сторон 🙂
ridinQwe … ridinQwerty
Лол
HAWK HAWK
@ridinQwerty и @MikeH Да, это очень неприятная ошибка с этим программным обеспечением — я даже не знаю, почему он хранит электронные письма, я не могу их получить. Хорошей новостью является то, что у нас есть собственный интерфейс на пути к завершению, и, если повезет, я буду использовать его для следующей сессии.
Paul.Ann … Paul.Annesley
Связанный факт: знаете ли вы, что example.com, example.org и т. Д. Зарезервированы для тестирования, так что вы знаете, что никто не получит письмо по электронной почте?
LornaJan … LornaJane
@Oatley Например, вы можете сделать базовую модель, а другие ваши модели будут расширяться — то же самое для контроллеров. Довольно часто я делаю это наоборот. Когда вы копируете и вставляете что-то в другой класс, вместо этого вы должны создать общего родителя, а не создавать дочернего
mycritte … mycritter
думаю, мы должны выйти из системы до закрытия браузера
Джерри Джерри
Мне пришлось попробовать 3 поддельных адреса электронной почты, прежде чем я нашел один, который он примет. 🙂
MikeH MikeH
PHP Pros — ты занимаешься разработкой внешнего интерфейса (кроме личных проектов)? Или, другими словами, вы можете сосредоточиться на стороне сервера?
HAWK HAWK
Да, извините за это. Досадно, что они также не отвечают на заявки в службу поддержки, поэтому я ничего не могу поделать, кроме как с бен продуктом.
LornaJan … LornaJane
@Oatley также, если вы используете фреймворк, посмотрите в его исходном коде — вы увидите несколько очень хороших «реальных» примеров того, когда классы расширяются — и иногда вам захочется расширить их классы до добавить вещи
Джерри Джерри
np @ Hawk
LornaJan … LornaJane
@MikeH Я не занимаюсь разработкой внешнего интерфейса. Говоря вежливо, дело не в моих талантах 🙂 Это не проблема, потому что большую часть времени я делаю API, а не сайты
Oatley Oatley
Лорна, я ZCE 5.3. Знаете ли вы, когда / если в экзамене будет участвовать самая последняя версия тел?
Paul.Ann … Paul.Annesley
@MikeH: я не профессионал во внешнем интерфейсе, но мне нравится время от времени делать что-то, чтобы идти в ногу со временем. Я думаю, что когда вы работаете на стороне сервера, важно понимать, как будут обрабатываться и отображаться данные, которые вы отправляете на внешний интерфейс.
mycritte … mycritter
@lornaJane, когда ты говоришь «делай API», ты имеешь в виду создавать или интегрировать их?
MikeH MikeH
В самом деле.
LornaJan … LornaJane
@oatley: я не вижу обновлений экзаменов ZCE в ближайшее время. Для Zend это огромные инвестиции, и я уверен, что в данный момент они не работают над этим.
MikeH MikeH
Github? Это так вездесуще, как говорят все дети?
LornaJan … LornaJane
@mycritter: либо / оба Я создаю много API, но также и заставляю системы общаться друг с другом с любой доступной им функциональностью. Я трачу больше времени на данные и серверы, чем на браузеры
LornaJan … LornaJane
@MikeH Я думаю, что контроль над источниками вездесущ. Многие компании используют альтернативный хостинг, так как GitHub стоит дорого для частных репозиториев, но, по моему опыту, идея удаленного размещения совместного управления исходным кодом является стандартной
HAWK HAWK
Добро пожаловать в тех из вас, кто только что пришел. Мы до сих пор говорили о фреймворках и теперь касаемся контроля версий.
Oatley Oatley
Спасибо, Лорна, с помощью extends вы можете расширить что-нибудь? Например, я вижу, что это «имеет» против «есть», поэтому, например, имеет ли смысл что-то вроде класса FormBuilder для расширения проверки класса? (держать вещи отдельно?) спасибо.
Paul.Ann … Paul.Annesley
Oatley: имейте в виду, что наследование — не единственный способ привнести функциональность в класс. Проверьте http://en.wikipedia.org/wiki/Composition_over_inheritance … вы можете просто написать небольшие методы для вашего класса, которые вызывают другие классы, посвященные этой конкретной работе.
LornaJan … LornaJane
@ Оатли, споры «есть» и «имеет» полезны с точки зрения именования вещей и размышлений о том, как они идут вместе. Если вы попытаетесь неправильно передать одну вещь в другую, я обычно обнаруживаю, что вы понимаете, что это не имеет смысла довольно быстро 🙂 Мой совет — опробовать ваши идеи в небольшом масштабе и посмотреть, считаете ли вы, что это работает для вас. заявление
Paul.Ann … Paul.Annesley
Придуманный пример, который может помочь проиллюстрировать композицию, а не наследование:
  Форма класса {
   публичная функция validate ($ field) {
     $ validator = new Validator ();
     return $ validator-> validate ($ field);
   }
 } 
так что форма «состоит из» валидатора… она использует его, но не должна иметь дело со сложностью наследования от него.
Oatley Oatley
Спасибо Пол и Лорна 🙂
Paul.Ann … Paul.Annesley
он также может иметь метод translate (), который вызывает класс Translator… гораздо сложнее расширять / наследовать от двух разных базовых классов 🙂
Oatley Oatley
Одна вещь, которую я всегда удивлялся В классе, прежде чем писать какие-либо методы в самом верху, вы объявляете свои свойства (то есть публичные, частные, защищенные) большую часть времени, когда я забыл это сделать, мой класс сценария в порядке, так почему они нужно объявить?
LornaJan … LornaJane
@ Ой, им не нужно — если вы просто начнете использовать свойства, они будут работать нормально. НО, объявив их, вы можете задокументировать их, а также, если вы не хотите, чтобы свойства были общедоступными (чего часто не должно быть), вам нужно будет объявить их и их видимость.
LornaJan … LornaJane
@ Хорошо, это хорошая практика объявлять их, но если вы этого не сделаете, PHP справится с этим, это очень терпимо
Paul.Ann … Paul.Annesley
@LornaJane: не объявляет ли их объявление предупреждения на определенных уровнях error_reporting в современном PHP?
ccovey ccovey
Зависит от использования
Paul.Ann … Paul.Annesley
PHP сильно заимствует из Java для своей классовой / объектной модели, а Java, являющаяся статически скомпилированным языком, зависит от тех свойств, которые были объявлены заранее.
Oatley Oatley
@hawk. Будет ли статья из всех вопросов и ответов, которые сегодня задаются, будет где-то полезной. Благодарность
Paul.Ann … Paul.Annesley
Кажется, я помню, что у меня были проблемы с магическими методами __set () и __get (), когда они не объявляли свойства. Детали туманные.
ccovey ccovey
$ this-> foo + = ‘bar’; выдаст предупреждение, если не объявлено. Но это немного другая проблема
LornaJan … LornaJane
@ Paul.Annesley без предупреждений от PHP, это вещь обратной совместимости. В PHP 4 не было никакой видимости, поэтому public был по умолчанию тогда, и сейчас это так. Вы можете просто использовать свойства и PHP будет предполагать, что вы хотели это сделать
HAWK HAWK
@ oatley Да. Завтра я выложу стенограмму сессии на sitepoint.com 🙂
Oatley Oatley
Я пытаюсь написать мини-фреймворк, который создает драйверы или для любых запросов PDO, или читаю любые файлы XML, переданные в мою систему. Это хорошая идея, или это перебор?
Paul.Ann … Paul.Annesley
Может быть, проблемы с serialize () или json_encode (), если вы их не объявите? Я хватаюсь за соломинку 🙂 Но они обязательно должны быть объявлены.
HAWK HAWK
@oatley И все стенограммы этих сессий можно найти здесь http://www.sitepoint.com/forums/showthread.php?873280-Transcripts-From-Past-Sessions
LornaJan … LornaJane
@ О, это звучит как хороший проект для меня. Вы можете попытаться сделать их как отдельные классы — тогда вы можете добавить их в любой другой проект, даже если вы используете фреймворк, включив ваши классы в автозагрузчик
Paul.Ann … Paul.Annesley
Вот интересная вещь: если у вас есть сайт, который не нуждается в базе данных и т. Д., Но вы хотите использовать преимущества его использования с помощью PHP (например, общий заголовок / нижний колонтитул / макет / компоненты и т. Д.), Рассмотрите генератор статического сайта. , Создайте свой сайт на PHP, сгенерируйте его в HTML-файлы и разверните на статическом хосте или Amazon S3. Никогда не взломанный;) В Ruby-land я бы рекомендовал http://middlemanapp.com/ для этого. В поисках примеров PHP я вижу http://www.phrozn.info/en/ и http://sculpin.io/ и другие, но не пробовал их.
@MikeH: возвращаясь немного назад, я большой поклонник Git и GitHub. git не прост для изучения, но я считаю, что оно того стоит… безусловно, один из моих самых ценных инструментов разработки. Я `git init` и фиксирую любую старую директорию, в которую я пишу код / ​​документацию, даже если это всего лишь проект одного дня для одного разработчика.
И git не блокирует вас в GitHub … есть другие хосты, или вы можете разместить свой собственный, или, если вы являетесь индивидуальным разработчиком, вы можете просто не передавать свой код на удаленный сервер. Git может работать полностью локально, не нуждается в сервере.
HAWK HAWK
Я собираюсь вскочить и сказать, что у нас осталось 5 минут сессии (в этот момент вы можете пообщаться между собой, но я освобожу Лорну), так что если у кого-то возникнет вопрос, который он не задал, сейчас будет время
MikeH MikeH
@ Paul.Annesley Я довольно невежественен с VC, за исключением того, что я понимаю его преимущества. Git (без хаба) все еще хорош для получения кода на разных машинах? Вам нужно настроить хост?
MikeH MikeH
Неважно, ты ответил, что
Paul.Ann … Paul.Annesley
@MikeH: git отлично работает над SSH, поэтому вы можете легко перемещаться между любыми хостами, между которыми вы можете использовать SSH.
MikeH MikeH
Это может быть не то, что я должен признать публично, но я использую Windows и должен был бы изучить SSH тоже
Paul.Ann … Paul.Annesley
🙂 PuTTY — отличный SSH-клиент: http://www.chiark.greenend.org.uk/~sgtatham/putty/ … прошло уже много лет с тех пор, как я использовал его, и я никогда не использовал git на windows.
LornaJan … LornaJane
@MikeH Вы там в хорошей компании, вокруг много пользователей Windows
Paul.Ann … Paul.Annesley
Хотя есть клиент GitHub для Windows.
MikeH MikeH
Благодарю.
Как насчет документирования кода? Я использовал PhpDocumenter, но я не мог заставить работать последнюю версию
Paul.Ann … Paul.Annesley
Если у вас есть время и интерес, я бы порекомендовал запустить виртуальную машину linux (Ubuntu?) На вашей машине с Windows, чтобы вы могли играть и изучать такие инструменты, как git / php / etc, в среде, для которой они были созданы.
ccovey ccovey
Я использую gitbash для Windows, если вам нужен ssh, то вам просто нужно сгенерировать ключи и т. Д.
Paul.Ann … Paul.Annesley
Я обычно использую виртуальную машину Ubuntu Server на моем Mac, в которую я использую SSH.
HAWK HAWK
И … это упаковка. Большое спасибо всем, кто участвовал. Завтра я выложу стенограмму в SitePoint. Не забудьте проверить курс Лорны https://learnable.com/courses/object-oriented-php-2734 и, наконец… Огромное спасибо Лорне за ее время и Полу за то, что он в последний момент пришел, чтобы помочь вне. Очень признателен.
Вы все можете оставаться здесь столько, сколько хотите, но сеанс больше не будет модерироваться. 🙂
LornaJan … LornaJane
@MikeH определенно phpDocumentor, я уверен, что их IRC-канал или список рассылки помогут вам с проблемами настройки
Jerry Джерри
Thanks Lorna, Paul, Hawk
HAWK HAWK
If you’d like to sign up for email notifications of future sessions, you can do so here https://www.facebook.com/sitepoint/app_115462065200508
MikeH MikeH
I’m a generalist, so my to-learn list is as long as my arm. Might not extend to Linux.Thanks @LornaJane, @HAWK
HAWK HAWK
No worries @Jerry
LornaJan… LornaJane
Thanks for having me everyone, some good questions today
HAWK HAWK
See ya everyone
Paul.Ann… Paul.Annesley
Cool, thanks everybody for the questions and interest.
MikeH MikeH
Maybe my inability to spell ‘documentor’ was the problem? Благодарность
Paul.Ann… Paul.Annesley
I’m http://twitter.com/pda on Twitter, although you’ll see more about Ruby etc than PHP there 😉
Jerry Джерри
GitBash on Windows is handy just for the Unix tools that come with it (grep, etc.)
MikeH MikeH
Пол, вы считаете, что Ruby (на Rails, я полагаю) намного быстрее для CRUD-подобных приложений, чем PHP?
Paul.Ann … Paul.Annesley
@MikeH: честно говоря, я не создаю много небольших приложений на любом языке, поэтому трудно комментировать это.
Paul.Ann … Paul.Annesley
Я предпочитаю язык Ruby языку PHP, несмотря на то, что он медленнее
и Rails — это впечатляющая структура, но она невероятно большая и, следовательно, сложная… для того, чтобы ее выучить, требуется много времени.
Мой ответ: веб-разработка сложна. 🙂