Обновить
64K+

PHP *

Скриптовый язык общего назначения

73,49
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Язык следующего десятилетия: каким должен быть новый системный язык программирования?

Время на прочтение6 мин
Охват и читатели1.8K
Последние годы в индустрии ПО выдались насыщенными: ядра процессоров множатся, а софт по‑прежнему думает в категориях однопоточных машин прошлого века. Крупные системы на C++ и Java становятся все сложнее, время компиляции растет, а отладка конкурирующих потоков превращается в ежедневную лотерею.

На другом полюсе — PHP, который к 2009 году прочно занял место основного инструмента для веб‑разработки: связка Apache + PHP + MySQL стала стандартом де‑факто для динамических сайтов. Однако PHP, даже в виде зрелой ветки 5.2 и готовящегося к выходу 5.3, остается в первую очередь языком сценариев для веба, а не универсальным системным языком.

Разработчикам нужен новый системный язык, который по скорости и контролю будет не хуже C, но по удобству разработки и скорости итераций приблизится к PHP, сохраняя при этом строгую типизацию и полноценную компиляцию. Возможно, в ближайшие годы мы увидим появление такого языка — минималистичного по синтаксису, но очень сильного в области параллелизма и масштабируемости.
Читать дальше →

Динамический CSS?

Время на прочтение4 мин
Охват и читатели20K
xCSS PHP ClassЯ давно ждал этого момента, нет честно, где-то в подкорке я очень-очень хотел такой штуки чтобы было удобно писать на CSS без переписывания похожих стилей по два раза, без выыскивания нужных разделов в собственном коде, в общем хотелось чтобы на CSS можно было работать легко и просто, что-то я затянул…И так встречайте xCSS — php-класс для работы с динамическим CSS.
Поехали

TwittReader – твитты на вашем сайте

Время на прочтение3 мин
Охват и читатели672

Выкладываю свой велосипед с:
  • возможностью вывода одного или нескольких последних статусов
  • подсветкой ссылок, e-mail, юзеров, хэш-тегов
  • кэшированием, которое работает в т.ч. когда Твиттер упал (а такое бывает)
  • перекодировкой (если на сайте используется не UTF-8)
  • гибкими настройками, собственными шаблонами

Читать дальше →

VS wizard: PHP extension

Время на прочтение1 мин
Охват и читатели2.1K
Около месяца назад экспериментировали с написанием экстеншенов и столкнулись с реальной проблемой: если в *nix разработка проста и прозрачна, то в винде можно огрести стразу куеву хучу гемора, причем решение далеко не очевидно.

Как известно, php <=5.2 собирают с помощью музейных версий VC, попытки же собрать версиями 7-9 были обречены на неудачу: либо не собиралось, либо падало в процессе работы.
В 5.3 версии разработчики сделали возможность собрать PHP при помощи VS 2008, так что эта проблема решена. Но… собирать экстешнены гораздо проще. Даже новыми версиями VC под PHP <= 5.2.
Мы сделали решение, простое и прозрачное, которое в пару кликов мыши создаст проект под VS 2008(ориентировались на standard+ версии).
Если вы знакомы с разработкой расширений, качайте наш визард и собирайте под винду без проблем.
А если не знакомы — то ждите завтра-послезавтра статью, черновой вариант дописан.
Итак, качайте PHP extension. Он снабжен установщиком, так что проблем не возникнет ;)

JetBrains WebIDE — публичная сборка #500

Время на прочтение1 мин
Охват и читатели1.4K
Квест «идеальное IDE для PHP» продолжается :) За прошедшую с предыдущей сборки неделю стали доступны две наиболее востребованые фичи — PHPUnit и FTP, ну и конечно мы постарались исправить как можно больше ошибок.

IDE
— начальная версия поддержки удаленных хостов — пока что только FTP upload. (Планируется: открытие удаленного проекта, автосинхронизация, SFTP/SSL/всякие cloud storage). Находится в меню Settings — Deploy&Run.
— Новые удобные закладки (F11)

PHP
— начальная версия поддержки PHPUnit (пока только локальный запуск)
— добавлено выведение типов для переменной в «foreach(...)», элемента массива «array[...]» и тернарного оператора "?:"
— добавлены поиск использований (Ctrl-Alt-F7) и переименование (Shift-F6) для глобальных переменных
— исправлены поиск использований и переименование для статических членов класса
— исправлены различные ошибки форматирования кода и комментариев

Загрузка Анонс

FTP PHPUnit

JetBrains WebIDE — четвертая публичная сборка (#470)

Время на прочтение1 мин
Охват и читатели1.7K
Мы продолжаем нашу борьбу за идеальное IDE для PHP ^) Анонс предыдущей сборки на хабре подарил нам огромное количество информации и указал основные направляния для совершенствования. В этот раз мы сосредоточились на выведении типов, (авто)дополнении и производительности. Под «выведением типов» подразумевается определение типов переменных, выражений и функции на основе анализа кода (а не PHPDOC @аннотаций)

В этой сборке мы добавили:
— автоматическое выведение типов возвращаемых значений функций на основе анализа операторов return
— автоматическое определение фактических свойств класса и их типов путем анализа кода конструктора (см. скриншоты)
анализ функций
анализ конструктора
— автоопределение типов глобальных переменных без аннонаций
— полную поддержку аннотаций var и global
— автовызов дополнения после $ и ->
— дополние внутри PHPDOC @тегов (частично), $переменных (из следующей декларации) и видимых типов
— сокрытие __magic() методы при первом вызове (если есть другие члены класса)
— ограничили дополение внутри catch() подклассами Exception

Производительность улучшли, настолько насколько это возможно в экспериментальной версии. По мере приближения к релизу ей будет уделяться основное внимание.

Скачать Анонс Подробный список изменений

Приглашаем всех пробовать и продолжать дискуссию :)

UPD: в этом билде был найден серьезный баг — дополнение часто не срабатывает для классов не из текущего файла :((( уже исправлено — будет доступно на следующей неделе.

Перевод даты в неименованный часовой пояс

Время на прочтение1 мин
Охват и читатели1.3K
При создании объекта DateTime в строке со временем можно указывать часовой пояс (сдвиг в часах и минут от GMT), например

new DateTime('2009-09-30 12:00:00+0400');


Если у нас есть две даты, которые находятся в разных часовых поясах, то иногда полезно посмотреть время одной даты в часовом поясе другой. Если обе даты были инициализированы способом, указанным выше (т.е. использую неименованные часовые пояса), то происходит ошибка «Can only do this for zones with ID for now».

Чтобы её обойти, делаем наследника DateTime
Читать дальше →

Список полезных PHP классов и библиотек

Время на прочтение4 мин
Охват и читатели65K

Email


  • Swift Mailer
    Swift Mailer легко интегрируется в любое PHP-приложение. Это гибкий и элегантный ООП-подход к отправке писем с множеством функций: отправка эл.почты, используя SMTP, SendMail, Postfix, поддержка серверов и др.
  • PHPMailer
    Лучший класс для работы с эл. почтой. Поддерживает сообщения в цифровой форме, S/MIME шифрование, текстовые и HTML-письма, изображения, поддерживает несколько Email’ов, SMTP-аутентификация.

Читать дальше →

PHP 5.3: DoS — это не баг, а фича

Время на прочтение1 мин
Охват и читатели1.7K
Именно так думают девелоперы PHP.
Фича заключается в Segmentation Fault/Access Violation под unix/windows при исполнении кода:
<?php
class A {} 
class B extends A { 
    public function __construct() { 
        $args = func_get_args(); 
        call_user_func_array(array($this, "parent::__construct"), $args); 
    } 
} 
class C extends B {} 
$instance = new C(); // Segfault

Разработчики говорят, что это совсем не баг и хотят добавить в документацию сведения об этой фиче.

Естественно падает вебсервер/воркер сервера. Но это нормально, __ведь так и должно быть__.

Хранение файлов

Время на прочтение3 мин
Охват и читатели21K
За последнее время мне пришлось активно работать с сайтами, которые большие объемы информации хранят в файловой системе. Это разнообразные сайты фото и файловых хостингов, а также сайты с загрузкой видео контента, некоторые сайты проектировались и программировались мной с нуля, некоторые переписывались, дописывались или «приводились в порядок».
Должен отметить, что хранение файлов в файловой системе является для многих программистов областью, которая проходит мимо их внимания.
Читать дальше →

Движок СУБД на PHP

Время на прочтение4 мин
Охват и читатели3.5K
Здравствуйте, уважаемые читатели. Моя СУБД не является портом никакой из существующих СУБД на PHP (в отличие от C#-SQLITE, к примеру), а является уникальной разработкой. Основным отличием от существующих движков, вроде TxtSQL, является поддержка индексов. Если используется только PRIMARY INDEX, скорость вставки на моём ноутбуке достигает 5000/сек. Для PHP, как мне кажется, это вполне неплохо.
Читать дальше →

Текст любой ценой: RTF

Время на прочтение14 мин
Охват и читатели92K
Что ж продолжим наши изыскания на предмет получения текста из различных форматов данных. Не так давно мы с вами научились вытаскивать текст из zipped-xml-based файлов (odt и docx), а также, в начале этой недели, из pdf. Сегодня мы продолжим с обещанным rtf.

Rich Text Format (он же rtf), вы могли бы подумать, достаточно забытый, хотя и не очень сложный формат представления текстовых данных. Что ж, относительно несложный для получения текста, но за свою историю: от своей первой версии до текущей 1.9.1 — он приобрёл под 300 страниц официально документации и огромное количество надстроек, которые в большей степени нам будут мешать при получении plain text'а. Попробуем их обойти…
Читать дальше →

PHPUnit+Netbeans

Время на прочтение4 мин
Охват и читатели10K
Здравствуйте.

Не для кого не секрет, что каждый модуль системы необходимо тестировать прежде чем начать использовать его в реальной системе.

Тем самым уменьшается риск появления новых багов, критический дыр и так далее.

В крупных конторах для этого есть специальные люди, которые занимаются тем, что пишут unit-тесты.

Меньшие конторы, фрилансеры этим грешат, да и на маленьких проектах это не всегда нужно. Согласитесь, если класс на 100 строк, то писать тесты на 200 строк кажется лишней тратой времени.

Тем не менее, не буду вдаваться в подробности кому надо кому нет.

Я хочу показать как можно клево тестировать код на NetBeans с удобным GUI.
Читать дальше →

Ближайшие события

JetBrains WebIDE — третья публичная сборка

Время на прочтение1 мин
Охват и читатели3.3K
Вышла третья предварительная сборка (номер 445) новой среды разработки для PHP — JetBrains Web IDE PHP developers edition.
В этой версии мы приняли во внимания пожелания пользователей (в том числе и фидбэк с хабра:) и добавили несколько новых функций — YAML, дополнение членов объявленных через теги PHPDOC @property и method, а также усовершенствовали дебаггер. Исправлено множество различных ошибок и серьезно улучшена производительность автодополнения в редакторе.

Загрузка новой версии с официальной страницы «программы ранней доступности» Web IDE.
Детальный список изменений — в блоге Web IDE.

UPD: Напоминаю всем что это даже не бета — мы просто демонстрируем над чем работаем. Вы главное пишите чего ВАМ в вашем любимом IDE не хватает и что вы больше всего цените — а мы позаботимся чтобы появилась достойная альтернатива!

YAML + structure PHPDOC completion

Затмение, лисичка и xdebug

Время на прочтение4 мин
Охват и читатели3.1K

Длинное и пространное вступление



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

Все мы знаем как улетучивается фан от ковыряния в работающем
спагетти-коде, что бы добавить туда что-то или убрать. Однако придя
на новое место мы, как известно, первое время задачи не выбираем. Со
своим нежеланием заниматься разбором старого плохого кода я начал
бороться в нескольких направлениях:

1. Психологическом: Стараюсь не злиться на того кто это написал, а
просто разбираюсь с тем как это работает. Не поверите, в области
висков от этого становится непривычно легко, лицо становится более
доброжелательным и код выглядит более понятным.

2. Организационном: Применяю краткую выжимку из GTD: а) собирай все,
б)перечитывай то что собрал в)делай это. У этого направления есть
также техническая сторона, но о ней не сегодня. Главное при
перечитывании (пункт б) не «возвращать» дела не приняв каких-либо
внятных решений по их дальнейшей судьбе. К слову «разобраться с этим
позже» это вполне внятное решение.

3. Техническом: Вот об этом направлении моего селфимпрувмента вы
сможете наконец прочесть после столь длинного и, как обычно у меня
получается, пространного вступления.
Читать дальше →

Интерпретатор PHP: а что там внутри…

Время на прочтение5 мин
Охват и читатели10K
Если совсем просто, интерпретатор PHP — это программа, которая выполняет скрипты на языке PHP. Он состоит из нескольких компонентов, которые работают вместе, чтобы обработать скрипт PHP и произвести вывод.
Читать дальше →

DooPHP — молодой и очень высокопроизводительный PHP фреймворк!

Время на прочтение4 мин
Охват и читатели4.5K
DooPHP
Doo фреймворк — один из быстрейших, если не самый быстрый из доступных PHP фреймворков. Он помогает разработчикам на всех стадиях создания web 2.0 сайтов.
Вольный перевод вводного текста и диаграммы тестов производительности.
Нафига ещё один фреймворк?

Простейшая генерация odt файла из существующего

Время на прочтение9 мин
Охват и читатели12K
Как-то раз передо мной стояла задача реализовать генерацию договоров для клиентов с нашего корпоративного сайта.
Сначала задача была решена просто ужасно — был заготовлен html шаблон договора, а пользователю выдавалась конвертация шаблона в pdf. Само собой это выливалось в кучу неудобств, в том числе, если требовалось что-то поменять в договоре.

Следующим решением было генерация odt документа. Это позволило редактировать документ нашим менеджерам независимо от сайта и программистов.
Полностью генерировать с нуля смысла нет. Почему бы не поработать с уже имеющимся файлом (отредактированным в OpenOffice) и просто заменить в нем необходимые элементы?

Этим мы с вами и займемся.
Читать дальше →

Текст любой ценой: PDF

Время на прочтение12 мин
Охват и читатели100K
Продолжаем разбирать текстовые форматы на предмет получения текста. Итак, обещанный ранее PDF.

С portable document format'ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.

Читать дальше →

Текст любой ценой: DOCX и ODT

Время на прочтение4 мин
Охват и читатели64K
Недавно возникла задача получения чистого текста из различных форматов документооборота — будь-то документы Microsoft Word или PDF. Задача была выполнена даже с чуть более широким списком возможных входных данных. Итак, этой статьёй я открываю список публикаций о чтении текста из следующих типов файлов: DOC, DOCX, RTF, ODT и PDF — с помощью PHP без использования сторонних утилит.

Читать дальше →