Лень – двигатель прогресса. Люди постоянно создают вещи, призванные облегчить их нелегкую долю. Именно лень позволила тряпке и швабре превратиться в моющий робот-пылесос. Похожие процессы происходят и в сфере компьютерных технологий. Вместо того, чтобы довольствоваться программированием в машинных кодах, общаясь с процессором через интерфейс перфокарт, люди стали придумывать всякие клавиатуры, мышки и мониторы, а так же языки программирования. Последние становились все более и более высокоуровневыми. В результате имеем то, что иммем — далеко неполный список ЯП. Насладившись всем великолепием этого многообразия, программисты внезапно стали осознавать, что теперь им лень учить все эти языки, и они стали мечтать о единообразии на всех платформах. Так родилась JAVA. Те, кому было лень ее учить, продолжали мечтать и писать на JavaScript. Их мечты были услышаны, и с другой стороны появился node.js. А что же теперь делать нам? — подумали PHP программисты, завистливо поглядывая на чужое счастье. Засучив рукава, они принялись напряженно работать, так появился проект php.js
Удивительно, но на Хабре этот достойный внимания ресурс упоминается лишь вскользь. Восполню этот очевидный пробел.
Начну с перевода страницы About:
О сайте
php.js – это сайт, предоставляющий создаваемые сообществом альтернативы на JavaScript для функций PHP.
Если вы хотите выполнять высокоуровневые действия на платформах с JavaScript таких как веб-браузеры, node.js и т.п., то, вероятно, вам придется засесть за JS код, объединяющий низкоуровневые функции языка и выстраивать их до тех пор, пока вы не получите что-то полезное вроде: strip_tags(), strtotime(), number_format(), wordwrap() или date().
PHP — язык, обладающий многими высокоуровневыми функциями, но, не смотря на то, что они не всегда реализованы так единообразно, как нам бы этого хотелось (чаще всего по той причине, что они повторяют лежащие в их основе функции на С), этот язык имеет огромное число последователей, привыкших к этому синтаксису, так что вполне разумно было бы взять его API за основу, заодно избавив себя от необходимости писать собственную документацию, что в целом, мы надеемся, сможет немного облегчить нашу жизнь.
С другой стороны, ценя JS за его привлекательные возможности, мы призываем вас к их изучению. Никогда не используйте php.js в качестве оправдания своего нежелания уделить этому время. По этой же причине мы не портируем весь язык PHP целиком или все его управляющие структуры; мы остановили свой выбор только на функциях.
Следует добавить, что расценивая портирование вообще всего как определенный вызов, мы решили включить и даже такие низкоуровневые PHP функции как strpos, не смотря на то, что в JavaScript могут существовать их близкие аналоги (String.indexOf). Помимо интеллектуального вызова для нас самих, такое портирование открывает php.js, как для всевозможных умственных упражнений, так и позволяет ему служить целям изучения JS. Таким образом, мы видим себя как некий большой ресурс, а разработчики сами могут решить, когда для них есть смысл что-то брать отсюда. И когда нет.
Сотрудничество
Для совместной работы мы используем github. Комментарии на сайте только для замечаний. Пожалуйста, прочитайте наши руководства в Wiki.
Кто использует php.js
Лицензирование
php.js имеет дуальную лицензию – MIT и GPL. Это означает, что вы можете использовать php.js согласно условиям либо лицензии MIT, либо согласно Открытому Лицензионному Соглашению GNU (GPL) Версии 2. (сравнительный анализ лицензий прим.автора)
Лицензия MIT позволяет вам использовать эту библиотеку в любом пригодном для вас виде, даже в коммерческих проектах, коль скоро вы сохраняете оригинальную лицензию при распространении своего продукта. По сути, вам даже не требуется раскрывать ваши модификации, хотя это было бы крайне желательно и, вдобавок к этому, дало бы вам уверенность в том, что ваши изменения не будут потеряны после апгрейда. С другой стороны, лицензия GPL делает эту библиотеку совместимой с другими GPL проектами.
Итак, прежде всего этот проект будет полезен для разработчиков, хорошо знакомых с PHP и его библиотеками. Подавляющее большинство функций работает в браузере, пожалуй, только mail и fopen для локального файла на стороне клиента вернут ошибку (о том, что уже сделано и, что предстоит сделать подробно написано здесь. Добровольцы?!). Но даже, если вы по какой-то причине не знакомы с PHP, но используете JS в своих проектах, то этот ресурс безусловно будет вам полезен, хотя бы с образовательной точки зрения. Не надо ожидать чудес, на момент написания этой статьи библиотека содержит всего 452 функции, весьма далекая цифра от всего объема PHP, но, поверьте, из чего выбрать там есть.
Каждая функция на сайте приведена с подробными комментариями и примерами использования (не забудьте и про родную документацию PHP). Для получения исходников конкретной функции нужно нажать на ссылку get on github в правом верхнем углу блока с кодом. Советую забрать сразу все исходники к себе, так будет удобнее. Так как библиотека весьма обширна, то нет смысла объединять все эти функции в один большой файл, он окажется излишне тяжелым. В зависимости от потребностей конкретного проекта необходимо выборочно формировать библиотеку с нужными вам функциями. Так же имеет смысл подумать об оборачивании этого API в какой-нибудь контейнер для того, чтобы не засорять пространство глобальных имен. Ну и не забывайте про оптимизацию и сжатие кода перед отправкой в браузер.
Резюме можно сделать следующее – php.js это стабильная и обширная JS библиотека с хорошей документацией, которая может упростить/ускорить разработку ваших проектов. Так как на вкус и на цвет, все фломастеры разные, то пусть в вашем арсенале появится еще и этот инструмент, глядишь, когда и пригодится; или просто будет лень варить очередной титановый велосипед и строгать костыль красного дерева.
Автор: KEKSOV