Основы языка PHP


Содержание

Основы языка PHP

Общие понятия

Язык PHP специально предназначен для веб-программирования. PHP сочетает достоинства языков C и Perl и при этом весьма прост в изучении и обладает значительными преимуществами перед традиционными языками программирования.

Синтаксис PHP очень напоминает синтаксис языка C и во многом заимствован из таких языков как Java и Perl.

Программист С очень быстро освоит язык PHP и сможет использовать его с максимальной эффективностью.
В принципе, в PHP есть практически все операторы и функции, имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (fgets,fputs,printf) и множество других.

Цель данного раздела — краткое ознакомление с основами синтаксиса языка PHP. Более подробную информацию по конкретным составляющим синтаксиса PHP вы найдете в соответствующих разделах.

PHP и HTML

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

echo «Привет, я — скрипт PHP!» ;
?>

Изучаем PHP и MySQL правильно

Есть в веб-программировании такие дисциплины, основы которых обязан знать любой человек, связанный с всемирной паутиной. Поэтому, так или иначе, а изучать PHP и MySQL вам придется. А если не хотите, то жадность все равно заставит:

Зачем изучать php и MySQL?

Такой вопрос могут задавать лишь те, кто совсем не знаком со спецификой построения веб-пространства и ее современной основой. Любой мало-мальски сведущий в программировании человек скажет, что эти две дисциплины являются на сегодняшний день главенствующими во всемирной паутине. А это значит, что почти весь интернет построен на основе PHP и MySQL :

Хотя в наше время значение PHP немного уменьшилось. И все из-за большого количества движков, которые ( по иронии ) также построены на основе этого языка.

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

Начнем с того, что не у многих хватает терпения, времени или сил заниматься изучением PHP и MySQL . К этому человек должен прийти сам. Но тот, кто решится постигнуть эти дисциплины, получит:

  • Востребованную профессию – на рынке труда толковые программисты всегда были нарасхват. Но даже неопытные новички с хорошими теоретическими знаниями PHP и небольшим опытом в веб-программировании смогут найти работу с достойной оплатой;
  • Удаленную работу – для того чтобы заниматься программированием не обязательно рано вставать, добираться на работу и соблюдать дресскод. Все это можно оставить за порогом, и создавать программный код, сидя дома в комнатных тапочках;
  • Экономию денег – если вы являетесь владельцем сайта, то конечно знаете, что услуги профессиональных веб-программистов стоят дорого. А для начинающего свое дело в интернете дорога каждая копейка. Самостоятельное обучение MySQL и PHP позволит сэкономить средства и пустить их в нужное русло.

Как уже отмечалось, большинство современных движков работают на основе PHP . Хотя их отказоустойчивость и находится на высоком уровне, но влияние человеческого фактора никто не отменял. Поэтому код CMS иногда ведет себя не так, как задумал веб-программист.

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

  • Интересное хобби – веб-программирование это не только средство зарабатывания денег или их экономии. Это еще и увлекательное занятие, которое совмещает в себе как техническое начало, так и творческую составляющую.

Что такое PHP

PHP относится к скриптовым языкам программирования. Чаще всего он применяется для создания веб-приложений и веб-сервисов. Данный язык поддерживается большинством хостингов в интернете. На его основе написана основная часть динамических сайтов.

Популярность PHP объясняется его следующими характеристиками:

  • Поддержка большинства популярных СУБД ( Систем Управления Базами Данных );
  • Автоматическая отправка заголовков HTTP ;
  • Встроенная поддержка работы с сессиями и cookies;
  • Средства работы с удаленными файлами;
  • Поддержка XForms ( формы, созданные на основе XML );
  • Приближенность синтаксиса PHP к языку C;
  • Отсутствие строгой типизации – типизация переменных осуществляется динамически.
  • Поддержка ООП ( объектно-ориентированного программирования );
  • Большой набор суперглобальных (предопределенных) массивов, предназначенных для работы с веб-пространством.

Что такое MySQL?

MySQL – это свободно распространяемая СУБД от компании Oracle . Вместе с бесплатной версией ведется разработка и коммерческих выпусков под заказ. Именно благодаря этому все новые разработки корпорации обязательно внедряются и в бесплатные выпуски СУБД :

Особенности СУБД MySQL :

  • Поддержка механизма репликации данных, начиная с первых выпусков MySQL .
  • Поддерживается работа, как с локальными источниками, так и с удаленными;
  • Встроенная поддержка большого количества типов таблиц. Причем благодаря открытому коду список поддерживаемых типов таблиц увеличивается;
  • Широкий диапазон кроссплатформенности;
  • Размер таблиц баз данных MySQL ограничивается лишь возможностями операционной системы, на которой развернута СУБД ;
  • Поддержка большинства популярных языков программирования с помощью API ( интерфейса прикладного приложения ).

С чего начать?

По горькому опыту многих новичков можно сделать вывод, что главной проблемой самостоятельного изучения PHP и MySQL является выбор правильного программного обеспечения. И все из-за того, что PHP является серверным языком программирования. Поэтому для тестирования кода нужен не только специальный редактор, но и локальный сервер:

Несколько оптимальных вариантов:

  • Apache HTTP Server – можно скачать на официальном сайте разработчика;
  • Денвер – наиболее оптимальный вариант для установки и дальнейшего использования. Пакет инсталляции включает в себя сервер Apache, PHP и MySQL . В первом варианте вам бы пришлось все это скачивать и устанавливать по отдельности.
  • XAMPP – набор, включающий в себя PHP и MySQL . А также встроенный самоучитель по PHP :

Оба набора включают в себя утилиту для создания и изменения баз данных на основе MySQL с помощью запросов на T-SQL . Но для написания кода на PHP понадобится редактор с поддержкой синтаксиса этого языка. Несколько наиболее подходящих вариантов:

  • PHPEdit ;
  • Microsoft WebMatrix ;
  • Kantharos PHP IDE ;
  • Adobe Dreamweaver .

И напоследок хотелось бы дать дельный совет всем начинающим. Не стоит думать, что у вас больше пядей во лбу, чем у всех остальных. Обучение нужно начинать с основ. Поэтому новичкам больше подойдет самоучитель PHP для чайников, а не продвинутый справочник для профессионалов. Тогда и камень веб-науки окажется не таким уж и твердым.

Разработка Php приложений

Тема4. PHP. Основы языка php

Основы разработки приложений на php

1. Официальный сайт php.net

PHP — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений.

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

PHP — «Hypertext Preprocessor (Препроцессор Гипертекста)». Первоначально аббревиатура PHP означала «Personal Home Pages».

Правила написания PHP-программы

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

Расширение файлов PHP-программ по умолчанию в PHP4 — .php. На основании этого расширения сервер распознает файл как PHP-программу и
запускает интерпретатор.

PHP-программа должна быть отделена от обычного HTML-текста.

Пример вывода сообщения на экран

Двойные кавычки исполняют код внутри(например, выводят значение переменной), с помощью одинарных можно вывести данные о переменных.

строковые:

Строковые переменные записываются в кавычках. В языке не нужно определять тип переменной. При действиях с переменными разного типа происходит автоматическое преобразование.
Операция (‘.’), которая возвращает объединение из правого и левого аргументов. Вторая — операция присвоения (‘.=’), которая присоединяет правый аргумент в левому аргументу.

$a = «Hello «;
$b = $a . «World!»; // теперь $b содержит «Hello World!»

Задание

Сложите 2 переменных строкового(например «55») и числового типа. Посмотрите результат

Операции
арифметические:
$a + $b Сложение Сумма $a и $b.
$a — $b Вычитание Разность $a и $b.
$a * $b Умножение Произведение $a и $b.
$a / $b Деление Частное от деления $a на $b.
$a % $b Modulus Целочисленный остаток от деления $a на $b.

Выражения сравнения вычисляются в 0 или 1, означая FALSE или TRUE (соответственно). PHP поддерживает > (больше), >= (больше или равно), == (равно), != (не равно), $b не равно TRUE, если $a не равно $b.
$a $b больше TRUE, если $a строго больше $b.
$a = $b больше или равно TRUE, если $a больше или равно $b.

Язык PHP

Язык PHP (PHP:HypertextPreprocessor) — один из наиболее популярных сценарных языков ввиду своей простоты, скорости выполнения, богатой функциональности и распространенности исходных кодов на основе лицензии PHP.

PHP состоит из ядра и набора подключаемых расширений: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF и др. Возможна разработка своих собственных расширений с их последующим подключением. Хотя и существуют сотни расширений, однако в стандартную поставку входит лишь несколько десятков хорошо зарекомендовавших себя расширений.

Интерпретатор PHP подключается к веб-серверу либо через DLL модуль, созданный специально для этого сервера, либо в виде CGI-приложения.

В настоящее время PHP используется сотнями тысяч разработчиков. Порядка 20 миллионов сайтов сообщают о работе с PHP, что составляет более пятой доли доменов Интернета

Синтаксис PHP подобен синтаксису языка Си. При этом некоторые элементы, как например ассоциативные массивы и цикл foreach, заимствованы из языка Perl.

Для работы программы на PHP не требуется описывать какие-либо переменные, используемые модули, и т.п. Любая программа может начинаться непосредственно с оператора PHP.

Помимо ограничителей , допускается использование дополнительных вариантов, таких как и . Кроме того, до версии 6.0 допускается использование ограничителей языка программирования ASP .

Имена переменных начинаются с символа $, тип переменной объявлять не требуется. В отличие от имен функций и классов, имена переменных чувствительны к регистру. Переменные обрабатываются в строках, заключенных в двойные кавычки.

Инструкции завершаются точкой с запятой ()

PHP поддерживает два типа комментариев:

  • в стиле языка С (ограниченные /* */),
  • C++ (начинающиеся с // и идущие до конца строки)

PHP является языком программирования с динамической типизацией, не требующим указания типа при объявлении переменных, равно как и самого объявления переменных. Преобразования между скалярными типами может осуществляться автоматически (хотя и имеются возможности для явного преобразования типов).

К скалярным типам данных относятся

  • целый тип (integer),
  • вещественный тип данных (float, double),
  • логический тип (boolean),
  • строковый тип (string)
  • специальный тип NULL.

К нескалярным типам относится

  • «ресурс» (resource),
  • массив (array)
  • и объект (object).

Тип NULL предназначен для переменных без определенного значения. Значение NULL принимают неиницализированные переменные, переменные инициализированные константой NULL, а также переменные, удаленные при помощи конструкции unset().

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

Массивы поддерживают числовые и строковые ключи и являются гетерогенными. Массивы могут содержать значения любых типов, включая другие массивы. Суперглобальными массивами (superglobal arrays) в PHP называются предопределенные массивы, которые видны в любом месте исходного кода без использования ключевого слова global.

  • $GLOBALS — массив всех глобальных переменных (в том числе и пользовательских).
  • $_SERVER — содержит множество информации о текущем запросе и сервере.
  • $_ENV — текущие переменные среды. Их набор специфичен для каждой конкретной платформы, на которой выполняется сценарий.
  • $_GET — ассоциативный массив с параметрами GET-запроса. В исходном виде эти параметры доступны в $_SERVER[‘QUERY_STRING’] и в $_SERVER[‘REQUEST_URI’] в составе URI.
  • $_POST — ассоциативный массив значений полей HTML-формы при отправки методом POST.
  • $_FILES — ассоциативный массив со сведениями об отправленных методом POST файлах. Каждый элемент имеет индекс идентичный значению атрибута «name» в форме и, в свою очередь, также является массивом со следующими элементами:
    • [‘name’] — исходное имя файла на компьютере пользователя.
    • [‘type’] — указанный агентом пользователя MIME-тип файла.
    • [‘size’] — размер файла в байтах.
    • [‘tmp_name’] — полный путь к файлу во временной папке.
    • [‘error’] — код ошибки.
  • $_COOKIE — ассоциативный массив с переданными агентом пользователя значениями cookie.
  • $_REQUEST — общий массив вводных данных запроса пользователя как в массивах $_GET, $_POST, $_COOKIE. Начиная с версии PHP 4.1 включается и содержимое $_FILES.
  • $_SESSION — информация о текущей сессии пользователя.

PHP поддерживает широкие объектно-ориентированные возможности, полная поддержка которых была введена в пятой версии языка. Класс в PHP объявляется с помощью ключевого слова class. Методы и поля класса могут быть общедоступными (public, по умолчанию), защищенными (protected) и скрытыми (private). PHP поддерживает все три основные механизма ООП — инкапсуляцию, полиморфизм и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent. Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием символов ->. Для доступа к членам класса из его методов используется переменная $this.

Среди наиболее часто используемых возможностей PHP стоит отметить следующие:

  • имеется большой набор функций для работы со строками;
  • работа с регулярными выражениями PCRE.
  • работа с базами данных, осуществляемая посредством модулей:
    • php5-mysql для MySQL,
    • php5-pgsql для PostgreSQL
    • и др.
  • для PHP разработаны средства шаблонирования веб-страниц, позволяющие эффективно разделить представление от модели, например Smarty;
  • имеется библиотека для работы с графическими изображениями GD, позволяющая производить преобразования с графическими файлами, и создавать изображения «на лету».

· 10. Лабораторная работа: Разработка CGI-приложений на Perl и PHP

Цель работы — oзнакомление с: основами языков разработки веб-сценариев на языках Perl и PHP; синтаксисом языков Perl и PHP; реализацией обработки данных, полученых от клиентского приложения, на стороне веб-сервера.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студентов недели бывают четные, нечетные и зачетные. 9438 — | 7438 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

30+ лучших приемов PHP для начинающих

Дата публикации: 2010-04-14

От Автора: PHP – самый широко используемый в Сети язык программирования. Представляем тридцать с небольшим лучших приемов для новичков, желающих приобрести основные навыки — php для начинающих.

1. Подружитесь со справочником по PHP

Если вы новичок в PHP, значит, пришло время познакомиться с внушающим почтение справочником PHP. Справочник по PHP невероятно исчерпывающий и содержит действительно полезные комментарии к каждой статье. Перед тем, как задавать вопросы или пытаться самостоятельно разрешить проблему, сэкономьте время и просто возьмите курс на справочник. Ответы на ваши вопросы уже удобно разместились в полезной статье на сайте PHP.net.
В данном случае мы Вам рекомендуем поискать самостоятельно справочники на русском языке, лучше php для начинающих. Будем рады, если Вы дадите ссылке на полезные справочники в комментариях к статье (Просто учитывайте, что это перевод статьи).

Илон Маск рекомендует:  Проблемы с форумом

2. Включите отчет об ошибках

Отчет об ошибках в PHP очень полезен. Вы обнаружите ошибки в своем коде, которых не замечали ранее, однако не все они препятствуют работе приложения. Есть разные уровни детализации отчета, которые можно использовать, но E_ALL будет одинаково представлять вам все ошибки, критические ситуации и предупреждения.

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

3. Попробуйте IDE

IDE (Integrated Development Environments/интегрированные среды разработки) – полезные инструменты для любого разработчика. Хотя они подойдут не для каждого, IDE определенно имеют свое значение. IDE обеспечивают такие инструменты, как:

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Code completion (подсказки идентификаторов в редакторе кода)

Предупреждения об ошибках

Рефакторинг кода (переделка кода)

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

4. Попробуйте PHP-frameworks

Вы можете многое узнать о PHP, просто экспериментируя с PHP-фреймворками. Такие фреймворки, как CakePHP или CodeIgniter, позволяют быстро создавать приложения PHP, даже если вы в нем не эксперт. В каком-то смысле они – дополнительные подпорки, которые показывают вам, каким образом должно выглядеть приложение PHP, и демонстрируют полезные концепции программирования (вроде отделения логики от дизайна и т.д.).

Возражение: лично я не советую новичкам пользоваться фреймворками. Сначала выучите основы.

5. Научитесь DRY

DRY – аббревиатура от Don’t Repeat Yourself, (Не Повторяйтесь), и это – полезная концепция программирования, без разницы на каком языке. DRY-программирование, как предполагается названием, гарантирует, что вы не пишете избыточного кода. Вот пример от Reinhold Weber:

теперь применением к нему подход DRY:

Более подробно о концепции DRY можно прочесть здесь и здесь.

6. Делайте отступы и используйте пробелы в коде для читаемости

Если вы не используете отступы и пробелы в коде, то результат выглядит, как картина Джексона Поллака (Jackson Pollack). Обеспечьте читаемость своего кода и нормальный поиск, потому что почти наверняка в будущем вы будете делать в нем изменения. IDE и современные текстовые редакторы могут автоматически делать отступы в коде.

7. Делайте код многоуровневым

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

8. Всегда используйте

Часто программисты пытаются использовать сокращения в операторах PHP. Вот как это обычно делается:

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

9. Используйте содержательные, последовательные названия

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

10. Комментируйте, комментируйте, комментируйте

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

11. Установите MAMP/WAMP

MySQL — самый популярный вид базы данных, используемый с PHP (хотя и не единственный). Если нужно настроить локальное окружение для разработки и тестирования ваших PHP-приложений на компьютере, предусмотрите установку MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш собственный компьютер может стать утомительным процессом, а оба этих программных пакета содержат MySQL. Ловко и просто.

12. Установите лимиты своим скриптам

Установка лимита времени на PHP-скрипты – очень ответственная вещь. Бывают моменты, когда скрипты выходят из строя, и когда это произойдет, вам придется использовать свойство set_time_limit (установить лимит времени), чтобы избежать бесконечно повторяющихся циклов и истечения таймаутов времени соединения с базой данных. Set_time_limit устанавливает лимит времени на максимальное количество секунд, за которое выполняется скрипт (по умолчанию 30). По истечении этого времени возбуждается неустранимая ошибка.

13. Используйте объекты (или ООП)

Объектно-ориентированное программирование (ООП) использует объекты, чтобы представлять компоненты приложения. ООП – это не только способ разбить свой код на отдельные логические секции, оно также снижает количество повторений кода и делает намного более легким его модифицирование в будущем.

14. Поймите разницу между одинарными и двойными кавычками

Использование одинарных кавычек в строках более эффективно, так как парсеру (синтаксическому анализатору) не приходится просеивать код в поиске специальных символов (прим. перев. escape-последовательностей) и прочих вещей, что позволяют двойные кавычки. Там, где это возможно, старайтесь всегда использовать одинарные кавычки.

Возражение: Собственно, это не обязательно верно. Тесты Benchmark показывают, что при тестировании строк без переменных существуют определенные преимущества быстродействия при использовании двойных кавычек.

15. Не ставьте phpinfo() в свой Webroot

Phpinfo – чудесная вещь. Просто создав PHP-файл, в котором есть:

Язык программирования PHP: от истоков до современности

Ему ежегодно пророчили исчезновение из-за невостребованности. Но спустя годы он по-прежнему в топе. Встречайте самый распространенный язык — PHP.

Что за язык PHP и почему он так популярен

PHP: Hypertext Preprocessor (изначально Personal Home Page Tools, «Инструменты для создания персональных веб-страниц») — один из лидирующих языков современной веб-разработки. Его отцом считается датский программист Расмус Лердорф, который в 1994 году создал набор скриптов на Perl — ту самую «персональную домашнюю страницу», которая легла в основу PHP.

Со временем к работе над ним подключились разработчики со всего мира. PHP — один из старейших языков в рамках open source-проекта Open source-проект Программное обеспечение с открытым исходным кодом. . Сейчас его поддерживает и разрабатывает группа энтузиастов во главе с компанией Zend Technologies. Ей руководят Зеев Сураски и Энди Гутманс: в 1997 году они создали третью версию PHP и активно развивают язык по сегодняшний день.

Первое свойство: интерпретируемость

Главная характеристика PHP — интерпретируемость. В отличие от Java, которая компилируется, а затем запускается в работу, PHP создается во время обращения к нему. Человек открывает сайт, на сервер посылается запрос, и в это время компилируется код. Каждый скрипт компилируется в реальном времени, а затем выполняется.

Приводим пример кода:

class Application <
protected $_image = null ; // файл, с которым нужно работать

/**
* метод сохраняет файл на диск
*
* [ >@param] string $path — путь к файлу новый
* [ >@param] srting $imagePath — путь старый
* [ >@return] boolean
*/
public function saveFile( $imagePath, $path)<

$result = file_get_contents ($imagePath, $path);

$newNameDir = ‘files/’.$nameDir[ 1 ] . ‘/’ .$nameDir[ 2 ] . ‘/’ .$nameDir[ 3 ];
mkdir ($newNameDir, 0777, true );

$resultWrite = file_put_contents($path, $result);
return $resultWrite;
>
>

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

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

Второе свойство: динамическая типизация

Языки программирования бывают:

1) со статической типизацией;

2) с динамической типизацией.

В первом случае тип переменной определен жестко и заранее. Если это число, программист напишет тип int. Если строка — string. Во втором случае переменная может быть одновременно числом, строкой, массивом, объектом — чем угодно. Одной переменной можно присвоить число, затем массив, объект — и язык программирования это позволит. PHP относится ко второй группе.

Но есть проблема

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

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

Обзор версий: между первой и седьмой

Версии с первой по третью были «сырыми»: мало возможностей, хотя для создания простых сайтов их хватало. С версии 5.4 PHP стал отлаженной технологией. До этого было слишком много нюансов, и работать с ними было непросто.

Релизы 5.5 и 5.6 — серьезные, проверенные временем вещи. Они отлично себя показали и достаточно защищены от инъекций Dependency injection «Вживление» чужого вредоносного кода в программу. и возможностей взлома.

Шестую версию пропустили: она должна была поддерживать Unicode на уровне ядра, но релиз не состоялся. «PHP6 был амбициозным, но отстойным. Вот почему мы занялись PHP 7, в процессе пропустив шестую версию», — прокомментировал в своем блоге Vilson Duka, один из разработчиков.

Седьмая версия считается революционной в плане скорости. 5.6 медленно работала с массивами и вообще с переменными: обработка статически нетипизированных данных происходила долго. Строка обрабатывалась в 60 раз медленнее, чем на C#. Это не бросается в глаза — речь о долях секунды. Но когда у тебя миллиард пользователей, как на Facebook, скорость критична.

HipHop и прорыв в скорости

Facebook написан на PHP — проблему нужно было решать. Их программисты создали для пятой версии собственный интерпретатор языка. Они компилировали его изначально в промежуточные коды, а затем отправляли в обычный интерпретатор Zend Engine. Программисты Facebook ввели статическую типизацию и ускорили работу языка в два раза. Это стало настоящим прорывом. Транслятор назвали HHVM, или HPHP Compiler — «HipHop для языка PHP».

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

С версии 7.0 до 7.3, которая сейчас в бета-тестировании, язык ускорялся — разница видна по замерам:


7.3 станет последним релизом: поддерживать и править ошибки будут, но ничего принципиально нового не появится.

Будущее PHP: восьмая версия

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

Восьмая версия появится ориентировочно в 2020–2022 годах. На open source-платформах изменения принимаются общим голосованием совета разработчиков. Сейчас идет тестирование нововведений в PHP 8.

В мире PHP ничего не происходит без движения сообщества.

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

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

Для чего используют PHP

Единственное применение — это веб-разработка. На PHP невозможно сделать десктопные приложения, он не используется в мобильной разработке — только веб. Но сегодня эта область огромна. Даже некоторые десктопные приложения уходят в веб — тот же Microsoft Office имеет облачный сервис. Ранее считалось, что PHP не подходит для больших высоконагруженных проектов, но опыт Facebook доказывает обратное. «Авито» — еще один пример удачной реализации. Подробнее о том, как использовать PHP — в нашей статье Для чего используют PHP и почему его ненавидят.

С чего начать изучение

PHP легко изучить самостоятельно за счет низкого порога входа. Буквально за вечер можно прочитать документацию и написать скрипт, который будет возвращать данные на сайт. Другие языки (C#, Java) имеют более высокий порог вхождения, и одного дня мало, чтобы создать работающий код. Сегодня на российском рынке труда из-за низкого порога входа PHP-кодеров много, и большинство — невысокого уровня.

Хороший разработчик PHP фактически применяет те же паттерны программирования, что и в статически типизированных языках. На PHP даже сложнее программировать, и вот почему. Если в Java или C# допустить алгоритмическую ошибку, например, присвоить переменной не тот тип, — они «дадут по рукам». PHP же это пропустит, и программист сломает голову: что не так? Ведь все работает, но неправильно. Из-за этого на современном рынке хорошим программистам PHP готовы платить чек не ниже, чем другим разработчикам. Но хорошего специалиста сложно найти.

Чтобы учить язык, нужно задать себе вопрос: «Для чего он мне?» Учить ради процесса учебы — бесполезно, ведь без практического применения знания забудутся. Нужно поставить конкретную задачу и искать решение.

Начинайте изучать PHP в интернете: сегодня выпускается много видеоуроков, онлайн-лекций и тренажеров. Рекомендуем наш курс «PHP-разработчик», где вы прокачаете свой уровень с нулевого до профессионального.

Основы языка php

Когда PHP обрабатывает файл, он ищет открывающие и закрывающие теги, такие как , которые указывают PHP, когда начинать и заканчивать обработку кода между ними. Подобный способ обработки позволяет PHP внедряться во все виды различных документов, так как всё, что находится вне пары открывающих и закрывающих тегов, будет проигнорировано

PHP также допускает короткие теги , однако использовать их нежелательно, так как они доступны только если включены с помощью конфигурационной директивы php.inishort_open_tag, либо если PHP был сконфигурирован с опцией —enable-short-tags .

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

Изолирование от HTML

Все, что находится вне пары открывающегося и закрывающегося тегов,

игнорируется интерпретатором PHP, у которого есть возможность обрабатывать файлы со смешанным содержимым. Это позволяет PHP-коду быть встроенным в документы HTML, к примеру, для создания шаблонов.

Это будет проигнорировано PHP и отображено браузером.

Это тоже будет проигнорировано PHP и отображено браузером.

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

Использование структур с условиями

Это будет отображено, если выражение истинно. В ином случае будет отображено это.

Пример №1 Продвинутое изолирование с использованием условий

В этом примере PHP пропускает блоки, где условие не соблюдается. Даже несмотря на то, что они находятся вне пары открывающих/закрывающих тегов, PHP пропустит их в соответствии с условием, так как интерпретатор PHP будет перепрыгивать через блоки, содержащиеся внутри условия, которое не соблюдается.

При выводе больших блоков текста выход из режима синтаксического разбора PHP обычно более эффективен, чем отправка текста с помощью функций echo илиprint.

Существует четыре набора тегов, которые могут быть использованы для обозначения PHP-кода. Из них только два и ) всегда доступны. Другими двумя являются короткие теги и теги в стиле ASP, которые могут быть включены или выключены в конфигурационном файлеphp.ini.Хотя короткие теги и теги в стиле ASP могут быть удобны, они не так переносимы, как длинные версии, и поэтому не рекомендуются. Кроме того, если вы намереваетесь вставлять PHP-код в XML или XHTML, чтобы соответствовать XML стандартам, вам следует использовать форму .

Илон Маск рекомендует:  Администрирование получаем время с удалённого nt сервера

1. 2. 3. Это синоним для » » 4.

Короткие теги (третий пример) доступны, только когда они включены с помощью директивы short_open_tagв конфигурационном файлеphp.ini, либо если PHP был скомпилирован с опцией—enable-short-tags.

Теги в стиле ASP (четвертый пример) доступны, только когда они включены с помощью директивы asp_tagsв конфигурационном файлеphp.ini.

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

Как в C или Perl, PHP требует окончания инструкций точкой запятой в конце каждой инструкции. Закрывающий тег блока PHP-кода автоматически применяет точку с запятой; т.е. нет необходимости ставить точку с запятой в конце последней строки блока с PHP-кодом. Закрывающий тег блока «поглотит» немедленно следующий за ним переход на новую строку, если таковой будет обнаружен.

Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними. Это означает, что HTML-код после // . ?> или # . ?> будет напечатан:?>завершает режим PHP и возвращает режим HTML, а // или # не могут повлиять на это. Если включена директива asp_tags, то аналогичное поведение будет и с // %> и # %>. Однако, тег не завершает режим PHP в однострочном комментарии.

Это пример

Заголовок вверху выведет ‘Это пример’.

‘C’-комментарии заканчиваются при первой же обнаруженной последовательности */. Убедитесь, что вы не вкладываете друг в друга ‘C’-комментарии. Очень легко допустить эту ошибку при комментировании большого блока кода.

$a === $b // TRUE если $a равно $b И имеет тот

$a !== $b // TRUE если $a не равно $b ИЛИ в

случае, если они разных типов.

$a $b // TRUE если $a строго больше $b.

$a = $b // TRUE если $a больше или равно $b.

Язык программирования PHP. Основы.

Нет доступа?

Получите доступ ко всему, что можно найти на этом сайте на:

1 мес. 6 мес. 1 год
490 руб. 1900 руб. 3900 руб.

Оплатить можно картой (Master Card, Visa, МИР), Яндекс Деньги, Сбербанк Онлайн, Qiwi и др.

Ссылки для оплаты доступны после регистрации.

Если вы из Украины, для оплаты нужно соединение с VPN. Оплата проходит через сервис Яндекс.Касса.

Верстка, HTML и CSS.

Веб-сервер. Backend разработка.

Техническая сторона веб-аналитики сайтов.

SEO и продвижение сайтов.

Здравствуйте. Меня зовут Дмитрий Ченгаев.

Я занимаюсь веб-разработкой и веб-программированием. Этот сайт, своего рода, обучающий центр, на котором я публикую свой опыт, уроки и знания в сферах работы с такими технологиями как:

[+] HTML
[+] CSS
[+] PHP
[+] Верстка сайтов
[+] Javascript
[+] других инструментах, которые помогают решать задачи веб-разработки проще и быстрее.

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

Если у вас возникают какие-то вопросы или непонятные моменты, пишите в «личку» или в комментариях на этом сайте. Постараюсь помочь.

Урок: основы PHP программирования с нуля

alexperec » 31 июл 2011, 13:51

Вот решил написать небольшое пособие, по основам программирования на php с нуля, в помощь новичкам, для изучения азов программирования.

Как это относится к сео? Да очень даже прямо. Порой бывает нужно выполнить груду однотипной рутинной работы, и не большой скриптик мог бы очень помочь и сэкономить кучу времени. Я уже не говорю за то, что порой бывают, нужны более серьезные модули или программы, заказывать которые стоит порой не по карману. Но это уже более сложные задачи, которые тут мы рассматривать не будем. Если вы действительно заинтересуетесь, то в Интернет полно умных книжек, которые так и просятся чтоб их прочли) Здесь же мы рассмотрим только основы, помогающие вникнуть в суть и перейти к самостоятельному обучению более сложных этапов.

Речь пойдет о программировании на языке PHP.
Ну приступим…

Программирование же – это написание скриптов, или иначе сценариев. Сценариев по которым будут обрабатываться входящие данные (данные которые мы предоставим программе). Писать сценарии намного сложнее чем форматировать текст. Ведь для этого мало знать синтаксис языка, нужно самому этот сценарий спланировать и реализовать средствами языка.

Перед началом изучения, нам нужно обзавестись веб сервером, с установленным PHP интерпритатором. Интерпретатор – это программа, которая читает наш код и «переводит» его на машинный язык. В качестве сервера может быть хостинг. А лучше скачать и установить денвер, тот тот же хостинг только локальный (доступен только вашему компьютеру, или вашей локальной сети). Скачать можно тут http://www.denwer.ru/ там же почитать про установку и инструкцию по работе с ним.

Теперь перейдем к началу изучения PHP.

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

Переменные
– переменная это участок памяти, где хранится какая-либо информация. Переменная имеет имя, по которому к ней обращаются, что бы прочитать или изменить её содержимое. По самому названию «переменная» можно догадаться что данные в ней можно изменять в ходе выполнения программы. Переменные бывают разных типов: числовые, строковые, массивы и т.д. Чтобы показать интерпретатору что данный символ(ы) являются именем переменной используется знак доллара $.

$peremennaya –это переменная
peremennaya –а это просто бессмысленный набор символов

Переменные чувствительны к регистру (заглавным и строчным символам). Т.е. $a и $A совсем разные вещи. Тип переменной PHP определяет сам, поэтому во избежание путаницы не делайте действий с переменными разных типов. Например не прибавляйте число к массиву, ибо результат не предсказуем.

Константы – постоянные. Смысл тот же что и переменная, только константы нельзя изменять. Т.е. то что в них один раз записали, то там и будет. Этими данными можно только пользоваться.

Операторы – действия. Например: +, -, *, /, = и т.д. Полный список можно почитать справочник. Следует заметь что выражение:

Означает не то, что значение переменной «а» равно значению переменной «b». А то что значению переменной «a» присвоили значение «b». То есть если было:
Код: Выделить всё $a = 1;
$b = 2;
$a = $b;
То в итоге выполнения этой программы значение $a будет равно 2.

А для сравнивания есть другие операторы: == и ===

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

Оператор вывода: echo «» или echo», одинарные и двойные кавычки имеют несколько разный смысл. Для вывода значений переменных кавычки не используются (одних переменных без текста). Покажу на примере:

Код: Выделить всё $a = «привет»;
echo $a; // выведет на экран: привет
echo «$a»; // Тоже выведет: привет. Но делать так не правильно
echo «$a друг»; // выведет на экран: привет друг
echo ‘$a друг’ // выведет на экран: $a друг

Т.е. то что в одинарных кавычках воспринимается как простой текст.

Оператор условия:
Код: Выделить всё If (условие) <
Код1;
>
else <
Код1;
>

Смысл его таков, если (if) условие верно (существует, имеет смысл) то выполняется код1, если не верно (else), то выполняется код2. Подробнее можно почитать в книжках, ибо тут писать много.

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

Как это работает. Переменная $i это счетчик. Первым выражением $i=0 мы задаем начальное значение, второе выражение $i Код: Выделить всё $a = 1;
сos($a);

то эта функция вернет, высчитает нам значения косинуса из единицы.
Кстати о слове «вернет». Вернет значит передаст. Т.е. мы может значения косинуса передать например переменной.

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

В запасе языка PHP есть множество встроенных функций. Они различаются по типам, по области применения и т.д. полный список и синтаксисом и описанием можно узреть тут http://php.su/functions/?page=cat

А тут можно прочитать про создание собственных (пользовательских) функций http://php.su/functions/custom/?1

Объекты .Так же есть еще объекты, но это уже намного сложнее, и для начала совсем не обязательно.

Есть еще переменные окружения. Эти переменные пользователю изменять нельзя. Можно только пользоваться данными. Их значение изменяет сам интерпретатор. Для получения данных из таких переменных есть специальная функция getenv(). Переменная SERVER_ADDR содержит айпи адрес пользователя исполняющего сценарий, например просматривающего например сайт. Например мы хотим чтоб на нашем сайте пользователи могли видеть свой IP, то мы создадим «модуль» примерно такого содержания:

Код: Выделить всё $ip = getenv(«SERVER_ADDR»);
echo «ваш IP: $ip»;

мы сначала присвоили переменной $ip значение IP адреса пользователя, а потом его вывели на экран с помощью оператора.

В функции getenv() имя переменной нужно указывать в кавычках, как в примере.

Таких переменных очень много, найти можно в справочниках.

Теперь еще хотел бы сказать отдельно за переменные типа массив. Массив это как бы таблица.
В одной строке которой содержаться индексы (номера или имена ячеек), в во второй строке соответственно значения.

Создать такой массив можно с помощью функции array(), назовем его mass:
Код: Выделить всё $mass = array («привет», «пока»,2+3, $ip = getenv(«SERVER_ADDR») , cos($a));
Массивы можно создавать и непосредственно присвоением значений элементам (читайте дополнительную лит.ру). Только в случае, если содержимое — выражение или функция как в ячейках 2, 3 и 4 кавычки не пишутся. Иначе это уже будет не выражение а просто строка.

Как мы видим элементы массива могут содержать в себе разные типы данных: строки текста, выражения, функции. Могут даже содержать даже массивы. Т.е. получится таблицы внутри таблицы.

Элементы массива нумеруются с нуля. Не один, два ,три. А ноль, один, два и т.д.

Обращаться к элементам массива можно так:
Код: Выделить всё Echo $mass[4];
На экран будет выведено значение косинуса, а не строка «cos($a);».

Существуют так же ассоциативные массивы, где вместо нумерации можно задавать ячейкам свои имена.
Массивы иногда очень удобно использовать. Например, есть функция file(), она читает файл построчно (строками) и создает массив, каждый элемент которого содержит все строки файла.

Например в файле test.txt у на такое содержание:
Код: Выделить всё Вася
Пошел
В магазин

Переменная $text становится массивом из трех элементов. Элемент с индексом 0, содержит «вася», с индексом 1 «пошел», и 2 «в магазин». Функции file() мы передаем путь к файлу. Путь должен быть верным! Данный путь действителен, только если файл лежит в одной папке со скриптом!

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

Пример 1.

На днях я столкнулся с небольшой проблемой. Мне нужно было скачать все изображении со страницы http://www.volgograd.org.ru/maps/maps/rostov/ . их там очень много. По одной я бы сидел очень долго. С учетом моей скорости интернета. Подумав как можно автоматизировать задачу, вспомнил что в тоталкомандере можно автоматически загружать файлы по списку ссылок. Но опять загвоздка, как этот список от сюда вытащить. Сидеть выделять столько ссылок мышкой из исходного кода мучительно, в конце обязательно на нервах рука дрогнет и все насмарку. Посмотрев исходный код мы видим что содержание страницы – таблица. А значит, зажав кнопку ctrl мы сможем выделить столбец. Нас больше интересует столбец имен файлов.

Предварительно наведя на имя(ссылку) мы видим что имена совпадают с именами на сервере. Это уже очень хорошо. Теперь скопировав столбец имен в блокнот, получаем текстовый файл, где с каждой строки имя файла с расширением. Сохраняем файл к примеру text.txt. все фотки находятся в одном каталоге, что уже облегчает работу. Теперь нам нужно понять что же нам надо дальше делать. А делать надо следующее, с помощью функции file() мы прочитаем документ и имя каждого файла окажется в своей ячейке. потом с помощью цикла в каждый элемент массива в начало допишем адрес докаталога, и получим массив с готовыми ссылками. А потом опять циклом этот массив выведем на экран. И у нас готов список ссылок на загрузку! В блокноте глянем сколько получилось имен (строк). Их 137. И приступим.

Кстати, пока не забыл, двумя слешами // обозначаются комментарии, т.е.

Код: Выделить всё echo «это код, который исполняется интерпретатором» ; // а это просто комментарий

И после каждой строки, кроме операторов правилами которых этого не предусмотрено должна ставиться точка с запятой — ;

Писать код можно в блокноте или специальных программах с подсветкой синтаксиса. Файл должен быть с расширением .php Начинаться и заканчиваться код должен так:

Теги показывают границы нашего кода. Все что вне них, интерпретатор выполнять не будет и просто выведет их на экран текстом.
Код с комментариями:
Код: Выделить всё

Данную программу можно немного оптимизировать, убрав лишний цикл. Т.к. оба цикла выполняют одну и туже работу, мы все действия перенесем в первый цикл, а второй удалим:
Код: Выделить всё

в итоге за считанные секунды я получил список урлов, поставил их на загрузку, а сам пошел пить кофе и заниматься другими делами

файлы программы можете скачать тут http://dl.dropbox.com/u/16037749/primer.rar
можете запустить её и убедиться, что все работает.

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

Во втором примере я опишу как я писал свой модуль http://ruseo.net/moy-modul-dlya-dle-bloki-dlya-opredelennih-stranic-t2535.html. Он уже имеет самое что именно есть прямое отношение к сео и оптимизации. Но это чуть позже, а то утомился

Помните порой легче создать свой «мини сео софт», чем искать готовое. Его кстати может и не существовать вовсе

Если вы действительно заинтересовались программированием на PHP, советую почитать книгу «PHP 5/6 и MySQL 6. Разработка Web-приложений» Дениса Колисниченко. Там очень много хорошего материала. Все понятно излагается. Читайте справочники, и главное учитесь думать и все себе представлять, и будет вам счастье! А все остальное как говорится придет с опытом

Буду ждать комментариев

Innulia » 31 июл 2011, 23:00

Мануал получился достаточно простенький, этих основ вполне достаточно для создания скриптов.
Есть только несколько вопросов: вы указали пример цикла с счетчиком. Данный тип циклов часто бывает неудобным для выполнения программ, чаще используются с условием и постусловием. Почему вы выбрали для описания именно цикл со счетчиком?
про массивы: вы указываете, что в массиве могут содержаться разные значения. Обычно массив содержит однотипную информацию: только символы, только числа, только текстовая инфа и тд. У вас в примере данные разных типов — это особенность массивов в php? То есть можно в один массив пихать разные данные?
Вы указали в тексте, что такое функции. Почему не были описаны процедуры? Они часто бывают намного удобнее. Есть ли процедуры в php?

pro-fast » 01 авг 2011, 16:32

Илон Маск рекомендует:  Пример 1 сканер

Спасибо за мануал!

Да, хотел спросить, что делает функция file_get_hmtl?

alexperec » 01 авг 2011, 18:15

Innulia писал(а): Мануал получился достаточно простенький, этих основ вполне достаточно для создания скриптов.
Есть только несколько вопросов: вы указали пример цикла с счетчиком. Данный тип циклов часто бывает неудобным для выполнения программ, чаще используются с условием и постусловием. Почему вы выбрали для описания именно цикл со счетчиком?
про массивы: вы указываете, что в массиве могут содержаться разные значения. Обычно массив содержит однотипную информацию: только символы, только числа, только текстовая инфа и тд. У вас в примере данные разных типов — это особенность массивов в php? То есть можно в один массив пихать разные данные?
Вы указали в тексте, что такое функции. Почему не были описаны процедуры? Они часто бывают намного удобнее. Есть ли процедуры в php?

Innulia, давайте по порядку)

Цикл со счетчиком на мой взгляд, наоборот намного приминимее. Например для перебора массивов и много еще для чего) Да и его синтаксис, и действия несколько сложнее для понимания, на мой взгляд, нежели циклы с условиями. И если понять цикл for, то остальные понять уже не составит труда ИХМО

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

процедуры? такого в php нет. или возможно оно носит какое-то другое название

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

Innulia » 01 авг 2011, 18:18

alexperec » 01 авг 2011, 18:28

pro-fast писал(а): Спасибо за мануал!

Да, хотел спросить, что делает функция file_get_hmtl?

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

По поводу функции, не встречал такую. Справочники и яндекс о ней умалчивают. От куда вы её взяли? Такая вообще существует?

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

alexperec » 01 авг 2011, 18:33

А я и не говорил что другие циклы бестолковые безусловно, различные ситуации бывают

А еще причина рассмотрения цикла for то, что я использовал его в примере Таким примером я убил несколько зайцев, задействовав практически все описанное в статье

alexperec » 02 авг 2011, 10:11

Вот дошли руки до описания второго примера.

Скачать его можно в этой ветке Мой модуль для DLE — блоки для определенных страниц там же инструкция по установке.

Это , в отличии от первого примера, уже полноценный модуль для сайтов на движке DLE. У данного модуля есть админка.

В установку модуля и специфику движка я вдаваться не буду, если администрация не против дам ссылку, где все это описывается

Немного истории. Суть проблемы заключалась в том, что мне нужно было чтобы для каждой категории новостей было свое «меню категории», где бы были ссылки на материалы именно этого раздела сайта. И при том, на корневых страницах самого раздела чтоб можно было написать статичный неизменяемый текст, оптимизированный под свой ключ. Т.к. обычно бывает так, что разделы содержат краткие описания новостей, и постоянно изменяются из-за того что новые новости публикуются, а старые уходят вниз. А ведь ИХМО у сайта должна прослеживаться иерархия страниц. Ведь у разделов больше шансов подняться по конкурентному ключу, чем у обычных страниц, ведь УВ разделов ниже. А значит важность выше в глазах поисковиков. И этим надо пользоваться. Да и к тому же так можно добиться своего рода постоянства, т.к. у раздела содержание меняться не будет, значит и в выдаче он должен сидеть ровнее.

Теперь о попытках решения задачи. Как часто бывает, то что видится легким, на самом деле в сто раз сложнее. Тогда писать модули на ДЛЕ я еще не умел, и мне казалось что решать проблему программно – это очень тяжко. И ломал голову как сделать это с помощью огромной системы шаблонов. Но в любом случае чем-то приходилось жертвовать, все и сразу сделать не получалось. Благо, я хоть не додумался действительно сидеть и эту груду шаблонов делать, все ограничилось теорией Потом я наткнулся на материал по созданию модулей и привязке их к движку (см. выше). Ведь главной загвоздкой для меня было не сколько как написать модуль, а как его интегрировать в движок.

Суть работы модуля. А суть такова, что мы, с помощью переменной окружения получим урл адрес текущей страницы, просматриваемой пользователем. Далее этот урл будем сравнивать со всеми имеющимися страницами сайта, при помощи оператора switch case, при обнаружении совпадения, загрузим нужный нам файл с меню.

Как работает оператор switch case:
Код: Выделить всё switch ($url) < // в скобках указываются данные которые мы будем искать. в данном случае это данные из переменной.
case »: // то что в кавычках это данные которые мы будем проверять на совпадения. те с которыми мы будем сравнивать
код; // код который будет выполнятся в случае если данные из switch, совпали с данными из этого case
break; // не обязательный оператор, он как бы относится к коду оператора case. но я его выделил отдельно специально чтоб обратить внимание. оператор break означает остановку. т.е. дальше искать совпадения мы не будем. если оператор не указать, то будут проверены все предложенные варианты.

default: // default — это действия по умолчанию, т.е. те действия которые мы выполним если не будет найден искомый оператор case
код; // код который будет выполнятся
break;
>

Следует заметить что операторов case в одной конструкции switch case может быть бесконечно много, а может и не быть совсем, например только default ( Но так делать смысла нет, но все же чтоб вы знали).

Теперь разберем сам код исполняющего скрипта:
Код: Выделить всё if(!defined(‘DATALIFEENGINE’)) < //условный оператор, проверяет как мы подключились к скрипту. не взломщики ли мы :) Это присуще всем файлам в движке DLE
die(«Hacking attempt!»); // die останавливает работу скрипта, и выводит сообщение из скобок. там обычно указывают причину остановки. в данном случае скипт остановится в случае подозрения на взлом
>

$url=$_SERVER[‘REQUEST_URI’]; // переменной $url присваиваем значение текущего адреса страницы без домена. его содержит переменная окружения REQUEST_URI. обратиться к ней мы могли бы и так как я писал в уроке, там описывается универсальный вариант, если мы не знаем чему так сказать эта переменная принадлежит. все глобальные (доступные в любом месте сценария без объявления и присвоения значений) переменные есть элементы глобальных массивов. в данном случае это элемент ассоциативного $_SERVER, к нему мы и обращаемся.

switch ($url) < // будем искать нужное выражение (в данном случае выводящее нужный блок) для текущего урла
case »: // в одинарных кавычках следует записать урл адрес страницы, без домена. т.к. в переменной $url так же содержится адрес без домена, чтобы совпадение вообще могла быть возможным.
$tpl->load_template(»); // это обращение к объекту класса. про классы я не писал ибо это очень очень много и всего я сам не знаю. $tpl — это объект стандартного класса DLE для работы с шаблонами (шаблонизатора). вообще классы это как бы набор функций, и их смысл примерно тот же, только больше возможностей. load_template загружает файл шаблона. он должен быть .tpl формата. В данном случае мы его немного обманули, там у нас не шаблон а код нашего меню :) в кавычки надо указать путь к файлу .tpl относительно корневой папки шаблона сайта
$tpl->compile(‘menu’); // compile обрабатывает наш файл загруженный через load_template. в скобках по всей видимости указывается его идентификатор, я точно сам не знаю. но обычно он совпадает с название модуля или файла шаблона.
break; // останавливаем поиск, ведь мы уже нашли что нам надо.

default: // меню для всех остальных страниц сайта, не указанных в операторах case
$tpl->load_template(»);
$tpl->compile(‘menu’);
break;
>

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

Теперь файл админки (он посложнее, и тут я применял несколько более широкий функционал PHP, нежели описано в мануале). В админке мы можем редактировать файл модуля menu.php. Сделал я это просто для удобства.

Смысл работы. У нас есть хтмл форма. Данные из форм получаем методом POST. Есть два метода POST и GET. POST это значит что данные будут передаваться как бы скрыто, а GET через адресную строку. Например адрес админки /admin.php?mod=menu мы файлу admin.php методом GET передали значение переменной mod. Теперь переменная mod равняется menu и движок загрузил нам необходимую страницу. GET используется для передачи вот таких коротких незначительных данных. А для передачи файлов, ПАРОЛЕЙ, текста и т.д. используется POST.

Рассмотрим форму. У нас есть текстовая область, туда мы вначале загружаем содержимое из файла /modules/menu.php, а потом при нажатии кнопки отправляем содержимое области, скрипту который перезапишет это все в тот же файл /modules/menu.php. Так же в форме есть независимый переключатель. Если стоит галочка, то он передаст скрипту переменную is со значением yes (name=is value=yes) имя переменной и значение произвольны. Для нас главное чтоб переменная была передана, т.е. существовала. С помощью нее скрипт будет знать что ему делать.

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

Сам код:
Код: Выделить всё if( ! defined( ‘DATALIFEENGINE’ ) ) < // см. выше
die( «Hacking attempt!» );
>

echoheader(«menu», ‘Управление динамическим меню’); // тоже стандартный «набор» DLE. выводит на экран шапку админки, в скобках указывается имя файла модуля и описание (по всей видимости для себя, т.к. нигде не выводится)

// начинается сам «рабочий код»

$file_prog = fopen (ROOT_DIR . ‘/engine/modules/menu.php’, «r+») or die («не открывается файл»); // функция fopen() открывает файл, просто открывает, ей мы указываем путь к файлу (ROOT_DIR . ‘/engine/modules/menu.php’) и права доступа к этому файлу (r+). в данном случае нам нужно файл только прочитать. но r+ позволяет большее. кстати ROOT_DIR . это премудрости движка, если вы будите писать просто скрипт, не для движков, то это не нужно, нужен только путь в кавычках. or die означает «если ошибка»

while (!feof($file_prog)) < // вот и пригодился нам цикл с условием, за который говорила Innulia)) суть его в том что код будет выполняться пока условие верно. feof() проверяет достигнут ли конец файла. этой функции мы передаем переменную содержащую идентификатор самого файла (что он открыт, как открыт, путь к нему. все это содержит теперь наше переменная когда мы ей присвоили значение функции fopen) Пока НЕ достигнут конец файла, мы продолжаем его считывать
$text_prog = $text_prog . fread ($file_prog,50); // в переменную $text_prog записываем содержимое файла. точка обозначает что к уже имеющемуся в $text_prog будет записано то что прочитает функция fread (читает файл, ей надо передать идентификатор файла и число символов которые на прочитать. мы читаем по 50 символов. можно было просто указать 9999999999999999999 и не париться с циклом, но вдруг у кого то будет содержимое файла еще больше. все надо делать еще и универсально, красиво).
>

$menu_1 = fopen (ROOT_DIR . ‘/engine/inc/menu_1.txt’, «r»); // открываем файл, в котором содержаться пояснения в текстовых областях. в них есть php код. и чтоб он вывелся как есть, а не был выполнен, я его подгружаю как обычный текст из файла. можно было это выполнить и по другому. но это на мой взгляд проще
$menu_2 = fopen (ROOT_DIR . ‘/engine/inc/menu_2.txt’, «r»); // аналогично
$menu_1 = fread ($menu_1,100); // читаем текст из файла. тут я уж знаю сколько там символов и цикла нам не нужно
$menu_2 = fread ($menu_2,100); // аналогично

// в переменную $forma_red записываем хтмл код нашей страницы со всеми формами и пояснениями. в двойные кавычки, т.к. в коде нам нудно вывести содержимое переменных $text_prog, $menu_1 и $menu_2

$forma_red = »

Для присвоения блоков новым страницам, замените конструкцию вида:

конструкцией (а в дальнейшем просто добавляйте ниже между break; и default:):

/mypage.html — адрес страницы (без доменного имени, т.е. полный урл выглядел бы так: http://my-domen.ru/mypage.html ) которой мы присваиваем меню. Модуль будет работать для абсолютно любого урла, даже вида: /admin.php?mod=menu&mod=menu&mod=menu&mod=menu&mod=menu&%QR%QP%QPO%/

file.tpl — имя файла, содержимое блока которое должно будет выводиться на искомой странице. Предварительно, вы естественно должны этот файл создать. ВАЖНО — файл должен быть именно формата .tpl

строки $tpl->compile(‘menu’);
break; оставить без изменений

оператор default: задает значении по умолчанию, т.е. блок который будет выводиться на всех остальных страницах

Для сохранения изменений поставьте флажок «сохранить» и нажмите «отправить». Без флажка «сохранить» изменения внесены не будут! После успешной отправки формы, файл модуля будет безвозвратно перезаписан — БУДЬТЕ ВНИМАТЕЛЬНЫ!

echo $forma_red; // выводим код на страницу
>

else < //если переменная is передана, т.е. форма заполнена, пользователь хочет изменить файл скрипта.
$text_prog = $_POST[‘phptext’]; // получаем новое содержание файла модуля из формы и записываем это в переменную
$s = fopen (ROOT_DIR . ‘/engine/modules/menu.php’, «w») or die («не открывается файл»); // опять открываем файл /engine/modules/menu.php, но только уже с другими правами. которые нам больше всего подходят для данных нужд
fwrite ($s, $text_prog ); // функция fwrite() записывает информацию в файл. ей нужно передать идентификатор файла и саму информацию соответственно

вернуться назад

«; //выводим ссылку, для возвращения назад к редактированию
> // условный оператор закончился

echofooter(); // выводим футер админки

alexperec » 02 авг 2011, 10:49

P.S. Кто-нибудь может подумать что тут воды больше чем сути. но это не так. Эта вся вода для того что бы понять мотивацию все действий, чтоб вырисовывалась ясная картина. Опытный программист все поймет и без пояснений. А этот же урок «основы», для тех кто только начинает. Что бы все разложить по полочкам и проследить ход мыслей , понять от куда что взялось — надо писать все с самого начала, а не только готовый код.

Что то народ вялый, наверное жара утомляет

Пишите активнее — не стесняйтесь! Задавайте вопросы, приводите примеры своих попыток — будем вместе все разбирать, искать ошибки

alexperec » 22 авг 2011, 18:39

В продолжение к этому уроку написал бонусную статью, так же со всеми пояснениями и разбором полетов Легкая CMS для малостраничных сайтов

Основы PHP

Сочетание PHP и MySQL является одним из самых удобных подходов к динамическому веб-конструированию, основанному на использовании базы данных. Благодаря открытости исходных кодов (в отличие от конкурирующей технологии Microsoft .NET framework) это технологическое сочетание можно использовать совершенно бесплатно, и поэтому оно приобрело очень большую популярность у веб-разработчиков. Любой претендующий на результативность разработчик, использующий платформу Unix/Linux или даже Windows/Apache, нуждается в серьезном освоении этих технологий.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL