Учебники

PHP для разработчиков на C

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

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

Здесь мы поместим некоторые сходства и различия в PHP и C

Синтаксис. Вообще говоря, синтаксис PHP такой же, как и в C: код нечувствителен к пробелам, операторы заканчиваются точками с запятой, вызовы функций имеют одинаковую структуру (my_function (expression1, expression2)), а фигурные скобки ({и}) делают операторы на блоки. PHP поддерживает комментарии в стиле C и C ++ (/ * * /, а также //), а также стиль Perl и shell-script (#).

Операторы — операторы присваивания (=, + =, * = и т. Д.), Булевы операторы (&&, ||,!), Операторы сравнения (<,>, <=,> =, ==,! = ), а основные арифметические операторы (+, -, *, /,%) ведут себя в PHP так же, как в C.

Управляющие структуры . Основные управляющие структуры (if, switch, while, for) ведут себя так же, как и в C, включая поддержку break и continue. Одно заметное отличие состоит в том, что switch в PHP может принимать строки в качестве идентификаторов регистра.

Имена функций. Когда вы просматриваете документацию, вы увидите много имен функций, которые кажутся идентичными функциям Си.

Знаки доллара — все переменные обозначены начальным знаком $. Переменные не нужно объявлять перед присваиванием, и они не имеют внутреннего типа.

Типы — PHP имеет только два числовых типа: целое число (соответствующее длинному в C) и двойное (соответствующее двойному в C). Строки имеют произвольную длину. Нет отдельного типа символов.

Преобразование типов — типы не проверяются во время компиляции, и ошибки типов обычно также не возникают во время выполнения. Вместо этого переменные и значения автоматически преобразуются между типами по мере необходимости.

Массивы — Массивы имеют синтаксис, внешне похожий на синтаксис массива C, но они реализованы совершенно иначе. На самом деле это ассоциативные массивы или хэши, а индекс может быть числом или строкой. Они не должны быть объявлены или выделены заранее.

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

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

Нет прототипов — функции не нужно объявлять до определения их реализации, если определение можно найти где-нибудь в текущем файле кода или во вложенных файлах.

Управление памятью. Механизм PHP по сути является средой для сбора мусора (с подсчетом ссылок), и в небольших сценариях нет необходимости выполнять какое-либо освобождение. Вы должны свободно размещать новые структуры — такие как новые строки и экземпляры объектов. В PHP5 возможно определить деструктор для объектов, но нет свободных или удаленных. Деструктор вызывается, когда последняя ссылка на объект исчезает, прежде чем память будет освобождена.

Компиляция и компоновка. Для сценариев PHP нет отдельного шага компиляции.

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