Archive for the 'coding' Category

Выбор PHP редактора

Писать код в vi или блокноте, конечно хорошо, но рано или поздно самостоятельно вводить названия функций и работать с форматированием кода надоедает. Сегодняшний рынок представляет десятки продуктов подобного рода, протестированны были единицы.

PHP Expert Editor

Этот редактор уже стал стандартом де-факто для многих программистов. Подсветка синтаксиса, автоматическое форматирование, шаблоны конструкций, отладчик, макросы, свёртывание конструкций, проверка синтаксиса и разборка файлов придётся многим по вкусу. Разборка происходит по include-файлам, но не работает если инклуд проходил по константе, к примеру SOME_DIR.”/classes/Main.class.php” - подключен к просмотру не будет. Работает с perl, HTML, JS, XML, Ruby, Tcl. Небесплатен, для жителей бывшего СССР требует регистрации.

PSPad

Пад поддерживает не только PHP, но и perl, (X)HTML, CSS, JS, Java, C(++/#), Python, VB, RSS документы, objectPascal и десятки других языков; синтаксис описывается в *.ini файлах, дириктории Syntax, которые подлежат редактированию. Масштабируемые вкладки. Бесплатен и не требует регистрации.

Notepad++

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

Стайлинг PHP

К вопросу о том, как нужно форматировать php. Есть много стилей, у каждого он свой, не то, чтобы неповторимый, но я решил показать стиль, которым пользуюсь.

Весь код должен состоять внутри полных тегов:

<?php[...]?>

И никак иначе.

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

Переменные внутри литералов должны отделяться. К примеру в строке есть ситуация “Print $varand exit…”, всегда переменные нужно выделять фигурными скобками “Print {$var}and exit…”.

Конкатенация строк производится без пробелов - “string”.”string”.

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

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

If, while - структуры должны заполняться так же, как и классы, строго под if,while в начале новой строки.

Switch-структура должна описываться в следующем порядке:

switch ($var)
{
	case 1:
	{
		break;
	}
	case 2:
	{
		break;
	}
	default:
	{
		break;
	}
}

Если кого интересует документация к стилю php от Zend.

php&perl:regexp

PERL:
Многие, уверен, что и ты, любят писать в pl-скриптах, что-то вроде этого:

m/paragraph1|Paragraph1|PAragraph1/i

Вроде бы код верен. Не тут-то было. Во-первых: что такое “m” перед регулярным выражением? Верно, это знак альтернативного огранечителя. То есть:

m{1|2|3}i

Верно, а пример выше имеет ненужный параметр. Не буду говорить, для чего “i”, наверное ты уже знаешь.
Мало того, но многие действительно думают, что тыкание () и создание субпатэрнов идёт на счёт работоспособности. Также почему-то s///g - это первая попытка удалить теги.

PHP

В PHP с regexp тоже всё не гладко, но попытаюсь дать совет: не используй preg_match. Лучше использовать POSIX функции. Они работают куда быстрее, чем портированные perl_reg_exp-функции.

$posts[0]

print “Начнём с нуля”