Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Веб-разработчику без знания php будет сложно, потому что веб-разработчик в сегодняшних реалиях, как правило, кроме php ничего и не знает.
Я немного занимался веб-разработкой в качестве неосновного занятия последние лет десять, и пока не было php, жизнь была легка и приятна.
Иногда разработка сводится к написанию плагинов в готовые системы, иногда к правке этих систем.
Корреляция между выбором пхп и качеством кода просто потрясающа.
Но языки, которые к этому подталкивают своим дизайном и идеологией модели конца семидесятых, это не оправдывает.
Помимо нахождения в главном контексте трёх тысяч встроенных функций, чего стоит заманчивая лёгкость смешения кода и маркапа при помощи встроенного интерпретатора.
Убеждён, что конструкция <? нанесла тяжкий удар по развитию веба, и затормозила популяризацию идей всуе помянутого 2.0 на несколько лет.
Это значит, что во всем мире не нашлось человека сделать нормальный молоток ?
Я думаю, что скользкость инструмента связана исключительно с "прямотой" рук :) А точность ударов - это следствие первого.
Наличие возможности смешивания HTML-разметки с PHP-кодом не означает обязательное её использование — это лишь грань гибкости.
PHP, в отличие, от языков общего назначения, предназначенных для системного программирования, позволяет применительно к веб-приложениям заниматься делом вместо изобретения ограниченного числа (время не резиновое) заведомо кривых (один-два [и при этом наверняка не веб-] программиста вместо десятков программистов, ясно понимающих, что именно нужно для веб-программирования) велосипедов (сотни функций уже давно и качественно реализованы и отлажены в рамках PHP).
Вы, видимо, встречались только с очень плохо написанными приложениями на PHP.
Возьмите Propel, возьмите Doctrine, возьмите Creole, возьмите фреймворки Symfony или CakePHP, наконец! Для PHP все уже придумано, написано, и люди этим пользуются.
А сила, брат, в том, что хороший специалист по PHP стоит на рынке в 1.5 раза дешевле, чем по другому языку.
PHP-исты сами ломятся в двери толпами, и их можно в конце концов чему-то научить.
В PHP есть много удобных готовых инструментов для работы в вебе.
Вы говорили о том, что 3000 встроенных функций - это плохо. Скажите, а если бы к вам в дом пришел сантехник и сказал, что у него с собой только молоток, "но им ведь все можно починить"? Я бы предпочел, чтобы у него был обширный набор инструментов.
Под "хорошими специалистами" я понимаю в том числе тех, кого можно обучить. :) А обучить грамотно программировать можно далеко не каждого.
Но объясните, объясните мне пожалуйста, почему на PHP работает более 90% сайтов рунета?
Я не склонен сверх меры защищать PHP, во многом он действительно и мне не нравится.
Мы все такие идиоты, не видим своего счастья в Джаве? :(
Понятное дело что далеко не каждого. Да и стоит ли обучать только PHP?
А откуда у вас такие цифры?
Работаю с интернетом с 1998 года. Это называется "репрезентативная выборка". Или проще, "много на своем веку повидал".
Результат и польза нулевые. История нас рассудит. :)
Единственная путаница, которую готов признать - где-то используется "_", где-то нет. Если вы хоть раз сталкивались с perl'ом - такие мелочи не будут являться серьезным препятствием в изучении.
Далее давайте подтвержать слова ссылками. ссылку на "свстроенный шаблонизатор" я уже получил, и
выяснилось, что никакой он не встроенный.
теперь было приятно получить ссылки:
- на дублирующиеся функции.
- на ADO.
на всякий случай, официальная документация тут
Еще периодически глаголы и существительные в функциях меняются местами
У нас разные понятия о встроенный и невстроенный.
функции mysql и mysqli и еще тоже самое через PDO.
Функции для работы с XML. Но в PHP5 уже сделали все же DOM XML. Но в результате сломали совместимость с PHP4.
Вы сами что-то редко что-то противопоставляете. Большую часть времени вы говорите, не подкреплено ссылками
возможно где-то встречается, но на вскидку даже не вспомню такого. поэтому скорее всего проблемы как таковой не существует.
по вашему получается, что если ножем можно зарезать человека, то значит такая возможность в него встроена? ;)
потому что если есть функция замены подстроки в строке и есть функция считывания файла, то то что вы называли "встроенный шаблонизатор" есть в любом языке :)
для версии 4 используется расширение DOM XML, для 5 DOM. Два разных подхода. где, что сломали?
И вообще, использовать DOM для каких-то серьезных объемов обрабатываемой информации - самоубийство, поскольку объем памяти, необходимой для обработки, растет такими темпами... например обработка относительно не большого документа 5.5М требует порядка 115М оперативки.
use SAX и будет щастье :)
спрашивайте, если что-то нужно подкрепить ссылкой, постараюсь найти, если она существует. пока не было такой необходимости.
Помоему в дистрибутив все же не должны входить сторонние расширения
В PHP есть дополнительные средства для работы с этим "шаблонизатором"
А что совместимость не сломали? То есть приложение написаное под DOM XML будет хорошо работать под DOM?
Ну java его довольно активно используют и ничего
у РНР нет "единого" разработчика. поэтому расширения поддерживаются различными
людьми.
думаю любому разработчику очень удобно когда решение "из коробки" умеет делать широчайший спектр работ. и я легко включаю нужным мне функционал.
вы имеете ввиду функции замены строки или возможность прочитать файл "шаблона"? или по вашему это (Listing 2) много лучше?
для версии 4 используйте расширение DOM XML, а не DOM - все должно работать. и потом, обратная совместимость - это палка о двух концах. часто нужно принять кардинальные изменения. и это правильно.
я лишь отметил, что использование DOM ведет к неразумным расходам памяти. и это не зависит от языка.
А "единая" идеология?
Но иногда мне приходилось пересобирать PHP
Из файла.
Но если бы они вынесли DOM XML к примеру в тот же PECL или объявили его DEPRECATED
а удалили бы в версии 6 было было бы логичнее
и единая идеалогия. если интересно - подпишитесь на листы рассылок
собирайте расширения и подключайте их. если вы хотите и функционал получить и ничего не делать ручками - может стоит задуматься о смене рода деятельности ;)
а есть популярные языки, в которых отсутствует чтение из файла?? я таких не знаю. а если есть возможность прочитать и сделать замены в строке, то ничего не мешает реализовать такой "встроенный" шаблонизатор на любом языке.
скажите, а вы смотрите те ссылки, что я даю? зачем вы просили их активно использовать, если все равно их не смотрите? DOM XML.
а как же обратная совместимость, за которую вы так ратуете постами выше?
В стадии разработки
Хочу как в java
Вообще речь шла о том что он там уже есть. То что реализовать то не проблема это понятно.
Я говорил про совместимость от версии к версии. Т.е. если имеем версию 4 и версию 5, то в 5 версии все что планируется снести помечаются как deprecated, а в 6 версии удаляются. Разумный надеюсь баланс между совместимостью и новшествами?
если вы считаете что идеалогия для языка - это что-то костное, никогда не меняющееся, то глубоко заблуждаетесь. другое дело, что дать прямую ссылку на страницу, где будет расписана "идеалогия разработки" я затрудняюсь. но если вам интересно, то без труда сможите определить ее читая листы рассылки. в общих чертах для 6 версии заявлена полная поддержка юникода.
так пользуйтес java, получайте тяжелые приложения, которые можно использовать только для внутрикорпортативных разработок :) и не надо утверждать, что РНР использует "не правильную" концепцию ;)
еще раз - такой подход "есть" в любом языке, в котором есть возможность прочитать файл и использовать функцию замены.
не разумный. снести и оставить расширение в PECL - две большие разницы. есть еще достаточно много приложений, написанных еще под 3ю версию. и они вполне выполняют возложенные на них задачи. где мы будем брать расширения под старые версии? или наоборот, вот есть расширение mnoGoSearch - оно вполне себе работает у меня под 5.2, хотя оно давно вынесено в PECL.
А зачем тогда они говорят, что это шаблонизатор ?
Просто если функции не помечать как "устаревшие" никто с них переходить не будет.
в который раз хочется конкретики - кто "они", и про что говорят "шаблонизатор"? :)
согласитесть, "устаревший" и "deprecated" различные понятия. deprecated должно помечаться то, что противоречит существующей концепции языка. поверьте (ну или сделайте поиск по слову deprecated по php.net), функции и подходы, которые действительно "мешаются" именно так и помечаются.
ARM, чтоб вы знали, это не чистые RISC-процессоры, как бы им этого ни хотелось. Да и программ под них пишут очень мало. Напишут ПО для холодильника - и наштампуют 10 миллионов. А у нас здесь специфика другая.
Что творится у процессора внутри - уже не наше дело. :)
Факт остается фактом: если вы будете программировать чистые RISC-процессоры, вы быстро сойдете с ума, и мы вас больше никогда не увидим. К сожалению.
Иллюстрация про сантехника более наглядна. :)
и о чудо! видим что чтобы получить весь набор фнкцций нам то придется ручками поработать - скомпилировать нужные расширения, ну или хотя бы в ини-файле их включить.
в предыдущей дискуссии вы как раз сетовали на то, что много нужного находится в PEAR. доктор, вы уж определитесь ;)
тогда я кратенько, для ленивых ;) если мне нужен функционал для работы с (например) фтп, то я подключаю в ини-файле необходимое расширение. до этого момента у меня НЕТ этого функционала. понимаете?
То что они входят в дистрибутив и легко могут быть скомпилированы и подключены - это как раз большой плюс. а 9М в архиве в современном интернете уже давно никого не напрягает.
PECL это не лучшее место для распространения, у него несколько другие цели.
PECL is a repository for PHP Extensions, providing a directory of all known extensions and hosting facilities for downloading and development of PHP extensions.
PEAR - вообще тут не при чем, там обраны модули, написанные на самом РНР.
Но это надо специально компилировать все в подключаемые библиотеки.
Но по умолчанию PHP грузит все модули которые имеются
если мне надо будет добавить модулей прийдется пересобирать PHP.
почему все сторонние библиотеки не вынести в отдельные расширения
дистрибутив готовят разработчики, но при этом в дистрибутив добавляются сторонние модули, поддержкой которых разработчики не занимаются.
Написано, что репозиторий. Чем оно плохо
Мне собственно в PHP не нравится отсутствие стройности и логичности.
вам шашечки или ехать? ;) то вам не нравится, что все "в кучее", то не нравится что есть возможность собрать то, что необходимо. собрать именно то, что нужно - это нормальная практика в *nix системах, не находите?
далеко не все. например в 5.2.0 фактически единственный модуль, который "вкомпиливается" libxml. при этом никто не мешает перед установкой сделать ./configure и указать свой набор модулей. либо собрать как расширение и включать через ini-файл.
не придется. собираете модуль и подключаете через ини-файл.
именно так и сделано. при этом оставлена возможность вкомпилить при сборке. все малопопулярные расирения регулярно убираются в PECL.
не вижу тут никакого противоречия. многие расширения основываются на сторонних библиотеках. некоторые не могут быть вкомпилены исходя из лицензии. потом РНР не принадлежит кому-то конкретно, поэтому разные расширения поддерживаются различными людьми.
в дистрибутив включены наиболее популярные расширения. в PECL вынесены экспериментальные расширения и малопопулярные. хотя тут я могу ошибаться - это мое понимание смысла PECL.
вот мы с вами второй раз обсуждаем РНР. и второй раз вы говорите об отсутствии стройности и логичности. и до сих пор никаких существенных аргументов не приводите. для меня все выглядит стройно и логично. для вас нет. скорее всего это не "проблема" языка, а субъективное восприятие. которое связано с тем, что не существует единственно правильного подхода. и если вы это примите, то все встанет на свои места.
У тебя каша в голове, пиар сравнял с пеклом, pdo в пекл отправил. Наверно нахватался с чем пришлось связаться.
Далее. Сколько бы не находил в PHP отрицательного факт остается фактом: мои поделки более нужны если они написаны на PHP нежели на Ruby или Java.
Как у PHP организованы репозитории модулей, сколько способов подключения к бд пользователей вообще не ипет.
Не можешь пользоваться молотком у которого "ручка скользкая, и наконечник разбалансирован", делай однотипную скучную работу, что сверху накапает :)
Если это сторонние модули, то почему они в дистрибутиве?
Мне вот кажется, что модули все же одним способом должны подключаться
Хорошо ткните в ссылку которая рассказывает как собрать модуль идущий в дистрибутиве PHP и при этом не пересобирая его.
Если бы все расширения соответствовали PECL и ставились из него я бы согласился, что действительно все сделано хорошо и корректно. Но на данный момент ведь это не так?
Во первых получается разброд и шатание с тем откуда и как берутся модули.
и аж два репозитария PECL и PEAR.
Наличие трех различных способов подключения к MySQL это логично?
Причем два их них входят в дистрибутив.
он пишется большим количеством людей без каких либо четких соглашений
давйте представим, что расширение mysql для РНР отсутствует. вы решили, что такое расширение просто жизненно необходимо для языка. вы его написали, закоммитили, расширение попадает в PECL, далее все понимают, что расширение оказылось крайне полезным для большинства разработчиков. оно включается в дистрибутив. я ответил на вопрос?
вам кажется не правильно. язык может быть использован в большом проекте, работать на сервере, на который возложена обработка сообщений пользователей. с xml такой скрипт не работает. понятно, что собирать нужно без этого модуля. смотрим другую ситуацию - у нас есть виртуальный хостинг. большинству клиентов xml также не нужен. зачем собирать ядро с поддержкой языка? мы включаем расширение для конкретного хоста, при этом большинство клиентов не ждут пересборки ядра. это вопрос гибкости в настройках.
легко
вы можете найти все расширения, в том числе те, которые включены в дистрибутив, в PECL. при этом в дистрибутив не включены расширения, которые малопопулярны, либо имеют статус "экспериментальный".
вот если разобраться что же такое PECL - все встанет на свои места. надеюсь то что написано выше в этом посте поможет этому.
да, в одном (PECL) расширения, написанные на С и которые необходимо собирать, в другом - написанные на самом РНР (PEAR). это очень логично и не вносит никакой путаницы.
на мой взгляд - очень логично. поскольку позволяет элегантно сохранить обратную совместимость с большим количеством программ, разработанных ранее (расширение mysql). при этом мы получаем возможность работать через объектную модель ноступа (mysqli), либо через универсальный драйвер (pdo). при правильной организации архитектуры приложения вообще без разницы какой драйвер бутет использован.
в дистрибутив входят все три.
на сколько я понимаю - отсутствие соглашений это ваше личное предположение? или вы где-то это прочитали?
Если его поддерживают сами разработчики PHP и они считают, что оно должно входить в базовый пакет языка флаг им в руки. Или там все сторонние модули поддерживаются разработчиками PHP
Зачем пихать в ядро поддержку xml я не знаю. Все же логичнее было бы запихать ее в отдельный модуль.
Это компиляция расширений PECL. А я говорил, про те что входят в дистрибутив PHP. Каким образом мне собрать расширение оттуда?
Но вот сейчас я проверил, на одной из машин где установлен PHP и пара пакетов из pecl. И к сожалению в списках pecl установленных расширений я не увидел.
Pecl - менеджер используемый для установки/обновления/удаления расширений PHP написанных на C.
Ну как вам сказать. Не очень это логично.
Тогда почему-бы не убрать все расширения типа mysql и mysqli в PECL
Ну а какой смысл поддерживать три реализации?
Если покажете мне соглашение, что можно, что нельзя я с удовольствием почитаю.
мне кажется вы так и не понимаете принципов заложенных в расширения. расширение - это то, что нет необходимости включать в ядро языка, поскольку оно может кому-то не потребоваться. часто - расширение является враппером для какой-то библиотеки (например, теже расширения для БД). или просто реализует неких функционал (например, функции работы с фтп).
и еще - что вы подразумеваете под "разработчиками РНР"? есть компания Zend, которая разрабатывает движок, есть комунити, которое разрабатывает расширения, делает сборки. вы о ком говорите?
так оно и есть в отдельном модуле.
а чем расширение PECL, отличается от того, что есть в дистрибутиве? (кроме того, что PECL содержит последние исходники расширений).
это какие расширения? может они и в дистрибутив не входят? ;)
не находите, что сами себе противоречите, либо не понимаете разницы между PECL и PEAR.
хотя бы по этому.
* не иметь проблем с обратной совместимостью
* предоставить разработчику тот инструмент, который нужен ему, а не тот, который хочется абстрактным разработчикам языка
какие доводы есть против такого подхода?
я уже давал ссылки на листы рассылки. если подпишитесь то увидите обсуждения тех или иных изменений.
В этом случае должен быть единый интерфейс для расширений не так ли?
Компанию Zend в таком случае
Если бы PHP было выполнено как базовое ядро + PECL + установленные через него расширения , то было бы несколько удобнее.
а потом при дальнейшей установке PECL они не отображаются в его списке
Ни одного из расширений которые есть в дистрибутиве в списке PECL нет.
Разницу я понимаю. Я не понимаю к чему они столько сущностей наплодили
А почему DOM XML вынесли в PECL?
Довод простой. Поддерживать одну реализацию проще чем три.
проблема отстутствия абстрактного слоя работы с СУБД исчезнет.
Вы разницу между официальным документом и листом рассылки понимаете? Вот к примеру к ядру Linux есть документ в котором описано какого стиля надо придерживаться если вы хотите, чтобы ваш патч вошел в ядро.
есть дистрибутив, который включает в себя определенный набор расширений. если вам не хватает чего-то - идете в PECL, скачиваете, ставите. это обычная практика. возмите любую *nix-подобную ОС.
в каком списке? вы говорите загадками.
наверное мы из разных источников берем дистрибутивы...
затем, что это разные сущьности.
поэтому
вы забываете о том, что существует комунити, которое поддерживает те расширения, которые нужны самому комунити.
в грамотно спроектированном приложении такой проблемы не существует. в принципе.
вы не понимаете разницы между "стилем кодирования" и идеалогией развития языка? о чем мы вообще говорим?
Есть разные *nix ОС и те что обладают пакетными менеджерами основное ядро все равно держат как пакеты. Это требуется для того чтобы была возможность простого обновления.
pecl list - показывает установленные расширения
Выполняют они одни и те же функции.
А почему тогда по аналогичным причинам не убрать две из трех реализаций mysql? В таком случае эти расширения должны быть в PECL.
Ну не понимаю я такой модели когда в дистрибутив пихают сторонние модули при наличии механизма их установки.
Угу она решается одним из блоков абстракции. Но это как раз один из велосипедов
А что идеология языка и "стиль кодирования" расширений и самого языка вещи не взаимосвязанные?
это к чему было сказано?
а это что за инструмент? никогда его не использовал.
делить только этому принципу нельзя. надеюсь, как ооп-программисту вам не надо это объяснять.
не должны. потому что в PECL остаются либо малопопулярные, либо експериментальные расширения.
как же вам тяжело приходится при работе с *nix дистрибутивами...
это не велосипед. это грамотно спроектированное приложение. в котором зависимость от внешних модулей сводится к минимуму.
связь между ними безусловно существует. но это принципиально разные документы, и у них совершенно разные цели.
К тому что у меня не показываются установленные расширения их базового дистрибутива. А чем ставите расширения из pecl?
есть код для работы с XML.
Их существование допустимо только из-за модели PHP.
В таком случае не понимаю зачем было делать такое функциональный менеджер.
С чего вы взяли? :) Я предпочитаю модульность большим кускам.
Но пока на данный момент в Gentoo ...
В случае если модуль дает необходимую абстракцию и является стандартным такой слой абстракции можно свести к минимуму.
К сожалению для PHP не видел ни того ни другого.
теперь я понимая что жаловаться то надо не на PECL, а на некоторую утилиту, которой вы ставите расширения. я предпочитаю делать ручками (если мы говорим о *nix). ссылку на то, как это рекомендовано делать, я уже давал выше.
не только. и уже не раз говорил об этом. С-расширения имеет смысл делать если имеется тяжелая (ресурсоемкая) операция или мы приходим к системным ограничениям языка (например, нам надо работать с железом или с системой).
PEAR - это (в большинстве своем) набор "велосипедов" для конкретных действий, которые нет смысла писать на компилируемых языках. на такой велосипед сел и поехал. однако, сам PEAR не лешен недостатков. например - необходимость поддерживать возможность использования классов и в 4й и 5й версии.
смотрим и понимаем, что модули имеют вполне конкретные цели.
я имел ввиду тот факт, что в дистрибутивы ОС включены различные сторонние модули и приложения ;)
используйте правильные системы, например FreeBSD :D
вы забываете, что помимо собственно абстрагирования мы получаем свой интерфейс. и этот интерфейс дает нам гарантию того, что изменения во внешнем модуле не приведет к необходимости переписывать приложение с нуля заново.
согласитесь, это не является проблемой языка ;)
про идеалогию думаю лучше всего может рассказать подписка на рассылку, расширения - см. выше, я давал ссылку на Zend API
у меня оно вообще отказалось работать. если взялись админить *nix сервер, то работайте ручками :) тем более что "ручками то понятно что там и какое стоит".
смотрите архитектуры больших приложений. например, в одном из топиков вам raa давал ссылку на яху
эсли вы почитаете наконец описание пакета, то увидите на чем он базируется. этот модуль предоставлет интерфейс.
ну что, еще одна религиозная война? :D
если это было бы так, я бы не советовал на них подписываться.
переходите на винду - там за вас уже все решили :)
это ваше личное мнение, а у людей, которые там работают оно обоснованное, в том числе и опытом работы с высоконагруженными проектами. почувствуйте разницу.
о боже! это тоже я вам насоветовал? тогда немедленно отпишитесь :D можно подписаться на какую-нибудь порно-рассылку (такие существуют?) наверняка там тоже не говорят об идеалогии. то, что из рекомендованных рассылок можно понять идеалогию (если конечно захотеть) безусловно.
аж два репозитария PECL и PEAR. В чем логика?
Вы понимаете разницу между скомпилированной программой, написанной на C, и сценарием, написанным на интерпретируемом языке?
м не кажется, что проблема надумана?
Что мешает поддерживать только PEAR если он более универсален, чем PECL?
мне кажется что проблемы вообще не существует ни для кого, кроме вас ;)
то, что PEAR - это модули, написанные на РНР, а PECL - это С-расширения. у них разные задачи.
А у меня есть ощущение, что господа не смогли осилить быстрый интерпретатор поэтому породили два репозитория, тот что побыстрее и тот что помедленне
надеюсь не надо пояснять разницу между драйвером бд и кодом, организующим абстрактный слой?
смотрим и понимаем, что
модули имеют вполне конкретные цели.
И какие же?
Хорошо задам вопрос подругому. PDO оно дублирует или нет. Если нет то почему?
И так же понимаем, что это может быть так же реализовано средствами DOM.
это почему? никакой принципиальной разницы (в плане программирования) нет откуда будут использован функционал.
так PEAR именно это и делает.
это куда нам их потребовалось экспортировать? если мне нужно расширить функционал класса - я от него наследую.
я говорил что эти два репозитария отличаются тем, что в одном лежат С-модули, в другом РНР. я говорил о том, что С-модуль на виртуальном хостинге нет возможности использовать. но я никогда не говорил, что PEAR может заменить PECL модуль. это вы такое уже додумали. и я даже знаю почему. потому что считаете что они выполняют одинаковые функции.
Там же где-то рядом есть про то, как писать расширения. вы можете реализовать функциональный, а можете объектный интерфейс расширения.
1. не обязательно процедур и не пхп, а скорее расширений.
2. PEAR модули позволяют не изобретать велосипеды для стандартных решений.
не правильно помните :) можно и объектный интерфейс делать. тот же PDO, mysqli, DOM и т.д.
Возьмите Propel, возьмите Doctrine, возьмите Creole, возьмите фреймворки Symfony или CakePHP, наконец
Программирование играет в современном мире роль не меньшую, чем химия. Мне так кажется.
Многие учителя высказывались за стенгазету для учеников в стиле WEB 2.0Дорогие учителя, как вы сами себе представляете стенгазету в стиле WEB 2.0??? Я вот одного из самых важных вебдванольных элементов простую навигацию в стенгазете даже и представить не могу, вы уж извините :)
В процессе обсуждения технологий и практик - всплыл любопытный момент, каждая школа желает иметь свой персональный сайт
но и за стенгазету для учеников в стиле WEB 2.0
Ведущие мастер-класса: http://****** совместно с http://*******
В мастер-классе приняли учителя информатики и зам. директора по ИТ московских школ.И по сколько грамм они приняли?
Первый мастер-класс по WEB 2.0, социальным сетям, php был проведен для учителей г.Москвы