Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Область видимости переменных.

Денвер - локальный сервер. Скачать Денвер, установить WAMP сервер для localhost (PHP 5.3.13, MySQL 5.1, PostgreSQL 8.4 etc.)

Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — проект Дмитрия Котерова, локальный сервер (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера —удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе.

 

 

Apache HTTP-сервер (назван именем группы племён североамериканских индейцевапачей; кроме того, является сокращением от англ. apatchyserver; среди русскоязычных пользователей общепринято искажённое апа́ч) — свободный веб-сервер.

Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.

 

Архитектура

Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов.

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

Ядро Apache полностью написано на языке программирования C.

Система конфигурации

Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:

· Конфигурация сервера (httpd.conf).

· Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).

· Конфигурация уровня директории (.htaccess).

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

Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).

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

Apache HTTP Server поддерживает модульность. Существует более 500 модулей[5], выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками.

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

В модулях реализуются такие вещи, как:

· Поддержка языков программирования.

· Добавление функций.

· Исправление ошибок или модификация основных функций.

· Усиление безопасности.

Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в виде модуля Apache.

Механизм виртуальных хостов

Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое.

Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и guid.

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

Функциональные возможности[править | править вики-текст]

Интеграция с другим ПО и языками программирования

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

К ним относятся:

· PHP (mod_php).

· Python (mod python, mod wsgi).

· Ruby (apache-ruby).

· Perl (mod perl).

· ASP (apache-asp)[6].

· Tcl (rivet[7])

Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, Lua, sh, Java.

Безопасность

Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:

· Ограничение доступа к определённым директориям или файлам.

· Механизм авторизации пользователей для доступа к директории на основе HTTP-аутентификации (mod_auth_basic) и digest-аутентификации(mod_auth_digest).

· Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей.

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

· Существуют модули, реализующие авторизацию через СУБД или PAM.

В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей.

Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя.

Для реализации шифрования данных, передающихся между клиентом и сервером используется механизм SSL, реализованный через библиотекуOpenSSL. Для удостоверения подлинности веб-сервера используются сертификаты X.509.

Существуют внешние средства обеспечения безопасности, например mod_security.

 

 

MySQL — свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMPи в портативные сборки серверов Денвер, XAMPP, VertrigoServ. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

26 февраля 2008 года Sun Microsystems приобрела MySQL AB за $1 млрд[4], 27 января 2010 года Oracleприобрела Sun Microsystems за $7,4 млрд[5] и включила MySQL в свою линейку СУБД.[6]

Сообществом разработчиков MySQL созданы различные ответвления кода, такие как Drizzle (англ.), OurDelta,Percona Server, и MariaDB. Все эти ответвления уже существовали на момент поглощения компании Sun корпорацией Oracle.

 

 

Платформы

MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS,SCO OpenServer, UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003, WinCE, Windows Vista и Windows 7. Существует также порт MySQL к OpenVMS. Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.

Языки программирования

MySQL имеет API[ для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk, Компонентный Паскаль и Tcl, библиотеки для языков платформы.NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.

История выпусков

 

Решение:

Среди statless ориентированных, качественных фреймворков мой выбор пал на Python/Django. Меня убедили (в том числе в офлайне) в его качественности, я нашел в своем родном городе несколько активных вакансий на его тему с 2500$++ заработной платой. Решающую роль в выборе сыграли критерии качества и популярности. Java и ASP.NET — имеют лучшую производительность, вероятно даже технологически более развитые, но их stateless ориентация — под сомнением (уточню при запросе). Выбирая между самым популярным php фреймворком — Zend Framework, Python/Django, Ruby on Rails я остановился на Django поскольку он популярней чем RoR, а php / zend был исключен по критерию качества самого php (качество синтаксиса и структуры языка). Python был близок к исключению по критерию качества интерпретаторов/компиляторов/выполняторов, но меня убедили (офлайн), что это только мои личные стереотипы и давно минувших лет проблемы.

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

— Ruby фреймворки (Ruby on Rails, Sinatra)

— Python (Django)

— PHP (Yii, Symfony)

 

Программирование на PHP в примерах

  • Предисловие
  • Что такое PHP?
  • Установка
  • С чего начинается Родина? (основы языка)
  • Или прыжок на месте
  • Программируемый калькулятор
  • Поуправляем?
  • И снова PHP - продолжим, или галопом по европам!
  • Заканчиваем обзор
  • Первый проект - начало. MySQL
  • Заглянем в базу. Первый скрипт
  • Краткий справочник по MySQL. Типы данных
  • Функции работы с MySQL
  • Подробности к предыдущей главе
  • Функции работы с MySQL, часть 2
  • Функции работы с MySQL, часть 3
  • Функции работы с MySQL, часть 4
Шаг 1. Что такое PHP? PHP это скриптовый server-side язык программирования, предназначенный в основном для включения в html страницу и выполняемый сервером перед выдачей страницы браузеру. Это не CGI, но вполне заменяет его! PHP очень похож на ASP (существует даже конвертор asp2php), но приспособлен к unix-like системам и чаще всего употребляется с web-сервером apache, хотя может работать и с MS IIS и в принципе с любым другим веб-сервером. Кроме того, PHP3 является объектно-ориентированным. На мой взгляд, основное преимущество PHP - простота, гибкость и скорость выполнения. Мне, например, понадобилось минут 15 для просмотра мануалов и примеров, для того, чтобы перевести весь контент моего сайта на SQL (подробнее с елудющих ШАГ-ах) и написать php-скрипт для выдачи его в html коде с шаблонным дизайном. Зачем так сложно? А вовсе и не сложно. Теперь, чтобы выложить на сайт новую статью или просто новость, я всеголишь добавляю новую запись на sql сервере с помощью MS Access или web-интерфейса sql, написанного кстати тоже на php, а при запросе страницы пользователем соответствующий php-скрипт выуживает из sql то, что ему надо и выдает уже красиво оформленную, готовую страницу. SQL. Вот это является еще одним преимуществом PHP, такое впечатление, что он (PHP) просто рожден существовать в связке apache+php+sql. Для свой работы я выбрал MySQL, который также существует и под linux и под win9x/NT. В качестве иллюстрации простоты php, предлагаю пример, передающий список файлов в текущем каталоге.
<HTML><BODY> Список файлов: <? $dir = opendir("."); while($file = readdir($dir)) echo "$file<BR>"; closedir($dir);?> </BODY></HTML>

Код, помещенный в теги <? и?> не передается браузеру, а выполняется непосредственно на стороне сервера. А выдается то, что выводит команда echo. Я думаю, что человек, мало-мальски знающий хотя бы один язык программирования, поймет этот пример без проблем. Кажется, PHP похож на C? или Perl? или Basic? А вот к стати тот же пример в ООП варианте:

<? $dir = dir("."); while($file = $dir->read()) echo "$file<BR>"; $dir->close();?>

И ведь вы можете это писать в своем любимом html редакторе! Лично я настолько полюбил этот язык, что пишу в нем и скрипты для linux shell (хотя это уже из области XXX;) и даже под dos/win. А запустить скрипт из шела проще некуда: php3 -q <filename> получается отличный интерпретатор.

А вот, для наглядности, еще пример для работы с MySQL:

<? $conn=mysql_connect("127.0.0.1"); if (mysql_select_db("db",$conn)) { $res=mysql_query("select * from tabl", $conn); while(($data=mysql_fetch_row($res))) echo("$data[0] $data[1]\n"); } else echo "Error!\n";?>

Этот скрипт выводит таблицу tabl из базы данных db на локальном MySQL сервере.

 

 

Шаг 3. php очень удобный, легкий, не требующий длительного штудирования, но основы языка нужно знать и без чтения тут никак не обойтись. Вообще я потратил не мало времени за написанием скриптов на php и если это время можно измерить сотнями часов, то время, потраченное на поиск нужных функций или решение проблем с осуществлением каких-либо специфических операций, в общем время просиженной за документаций, как ни странно, не более одного часа! Так что еще раз повторю - не пугайтесь и флаг (очки) вам в руки. Начнем с того, что для PHP сущестует 4-е способа отделения его от общего кода HTML (имеется ввиду для интерпретации). 1.
<? echo ("SGML инструкции\n");?>

2.

3.

<?php echo("XML документ\n");?>

4.

5.

<script language="php"> echo ("специально для FrontPage"); </script>

6.

7.

<% echo ("ASP-стиль"); %> <%= $variable; # Комментарий "<%echo.." %>

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

<?php echo "This is a test"; echo "This is a test also"?>

PHP поддерживает комментарии в стиле 'C', 'C++' и Unix shell. Например:

<?php echo "test"; // Комментарий в стиле C++ /* Это многострочный комментарий в стиле C++*/ echo "test2"; echo "Test3"; # Это unix-shell комментарий?>

Типы.

PHP поддерживает следующие типы данных:

  • integer (целочисленные)
  • floating-point numbers или double (числа с плавающей запятой)
  • string (строки, текст)
  • array (массивы)
  • object (обьекты)

Преобразование типов происходит следующим образом. Если переменной при равнивается строка (текст в кавычках) то эта переменная становится строковой. Если-жы с ней совершается одна из многих математических функций или она приравнивается численой переменой, она становится численной, причем если приравниваетс яне целому значению - то станет типом double. Пример:

$foo = "0"; // $foo строка (ASCII 48) $foo++; // $foo тоже строка "1" (ASCII 49) $foo += 1; // $foo теперь integer (2) $foo = $foo + 1.3; // $foo теперь double (3.3) $foo = 5 + "10 паросят"; // $foo теперь снова integer (15) $foo = 5 + "10 ящиков"; // $foo и по прежнему integer (15)

значение в скобках - результирующее значение переменной

Преобразовывать типы можно чистА в сишном стиле:

$foo = 10; // $foo это integer $bar = (double) $foo; // $bar это double

Разрешенный преобразования:

  • (int), (integer) - cast to integer
  • (real), (double), (float) - cast to double
  • (string) - cast to string
  • (array) - cast to array
  • (object) - cast to object

К стати, определить тип переменной можно функциями gettype(), is_long(), is_double(), is_string(), is_array() и is_object().

Область видимости переменных.

Во-первых. Все переменные начинаются с символа $

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

Поясню на примере:

$a = 1; /* глобальное определение */ Function Test () { $a=2; echo $a; /* локальная переменная */ } Test (); echo $a;

Таким образом в функции используется локальная, собственная переменная и результатом прогарммы будет вывод чисел 2 и 1, а не 2 и 2, как некоторые могли подумать.

Ну а если вы хотите в функции использовать глобальные переменные, необходимо сделать так (декларировать с помощью оператора global):

$a = 1; /* глобальное определение */ Function Test () { global $a; $a=2; echo $a; /* локальная переменная */ } Test (); echo $a;

Теперь в функции вы переопредилили глобальную переменную и вывод будет числа 2 и 2. Но есть и другой способ добраться до глобально-определенных данных - через ассоциативный массив $GLOBALS[]. Пример предыдущей программы, реализованный новым способом:

$a = 1; /* глобальное определение */ Function Test () { $GLOBALS["a"]=2; echo $a; /* локальная переменная */ } Test (); echo $a;

Обратите внимание переменная в массиве указывается без символа $

Кроме этог о PHP предоставляет возможность исопльзовать статические переменный. Все как в C/C++.

Function Test () { static $a = 0; echo $a; $a++; } Test(); Test(); Test();

Результатом выполнения этого скрипта будет вывод чисел 0, 1 и 2.

Переменные, переменные.

Скорее всего скоро вам понадобятся переменныес динамически (в ходе работы скрипты) изменяемым наименованием. Поясню на пример, что я имею ввиду:

$a = "hello"; $$a = "world";

Данная запись означает, что переменной с именем a мы присваиваем значение "hello". Следующей операцией переменной с именем, хранящимся в переменной с именем a, то есть - переменной hello мы присваиваем занчение "world"

echo "$a ${$a}";

тоже самое, что и

echo "$a $hello";

В результаты мы получим на экране hello world

Дело ненмого усложняется, если вы хотите использовать подобные массивы. Ведь есл вы запишете $$a[1] - интерпретатору надо будет знать, что использовать в качестве переменной - $a или $$a (имя, зранящееся в $a). В таком случаем вам прийдется исопльзовать следующий синтаксис - ${$a[1]} в случае, если вы хотите использовать переменную с именем, зранящимся в массиве $a с индексмо 1 и ${$a}[1] в другом случае (если вы хотите использовать элемент 1 массива с именем, зранящимся в переменной $a.

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

 

 

Шаг 5. Программируемый калькулятор Сегодня рассмотрим все возможные операции на всеми возможными типами переменных и их значениями. Арифметические операции. Арифметических операция в PHP всего пять, вот они:
$a + $b
$a - $b
$a * $b
$a / $b
$a % $b

Я думаю здесь все ясно. Ну можеттолко поясню последнюю операцию, результат ее выполнения остаток от деления $a на $b.

Строковые операции.

Ха! А здесь и того меньше! Чисто строковой операцией считается операция сложения двух строк. Причем выглядит она довольно необычно, но практично:

$c = $a. $b;

То есть символом этой операции является точка. А результатом ее выполнения будет обыкновенная строка, состоящая из $a и $b

Операции присваивания.

Ну тут вообще ничего сложного, она всегда одна, это знак '=' и естественно этот знак означает, что переменной с лева от него будет присвоенное значение, полученное в результате выполнения каких либо операций или переменной/константы с правой стороны. Причем тут возомжно некоторый С++ -ные варианты, как-то:

$a = ($b = 4) + 5; // $a будет равна 9, а $b 4-м. $a += 5; // аналогично $a = $a + 5; $b = "Привет "; $b.= "всем!"; // аналогично $b="Привет всем!"

Двоичные операции.

Аа... и тут вообщем-то ничего нового:

  • Побитовое И (AND)
$a & $b
  • Побитовое ИЛИ (OR)
$a | $b
  • Исключающее или (XOR)
~ $a
  • Сдвиг влево на $b битов
$a << $b
  • Сдвиг вправо на $b битов
$a >> $b

Логические операции.

Все тоже...

  • И (AND)
$a and $b
  • Тоже самое, что и предыдущее
$a && $b
  • Или (OR)
$a or $b
  • Тоже, что и предыдущее
$a || $b
  • Исключающее или (XOR)
$a xor $b
  • Инверсия (NOT)
! $a

Оперции сравнения.

Здесь будет что-нибудь новое или нет? Даже комментировать эти операции не буду...

$a == $b
$a!= $b
$a < $b
$a > $b
$a <= $b
$a >= $b

В PHP существует также, как и в C++, тринарный оператор '?:'. Кто незнает - обьясню на примере.

$res= (expr1)? (expr2): (expr3);

Результатом этой операции будет значение (expr2), в том случае, если expr1==1 и значение expr3 в противном случае. Где все эти expr1, expr2, expr3 - являются переменными/константами или математиескими выражениями. Такая запись по сути своей аналогична следующей:

if (expr1) $res=(expr2); else $res=(expr3);

но естественно более лаконична.

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

 

 

Шаг 6. Поуправляем?

Мне кажется не стоит попусту лить воду и описывать тут и так всем известные из других языков програмирования структуры управления. Вместо этого я приведу их полный список и все методы их использования.

If.

Структура:

if (выражение) блок_выполнения

Пример использования:

if ($a > $b) print "a больше, чем b"; if ($a > $b) { print "a больше, чем b"; $b = $a; }

Else.

Пример использования:

if ($a > $b) { print "a больше, чем b"; } else { print "a не больше, чем b"; }

Elseif.

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

Пример использования:

if ($a > $b) { print "a is bigger than b"; } elseif ($a == $b) { print "a is equal to b"; } else { print "a is smaller than b"; } if():... endif;

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

Пример использования:

<?php if ($a==5):?> A = 5 <?php endif;?>

Или вот еще с использованием вышеописанного оператора ELSEIF

if ($a == 5): print "a equals 5"; print "..."; elseif ($a == 6): print "a equals 6"; print "!!!"; else: print "a is neither 5 nor 6"; endif;

While.

Структура:

while (выражение): блок_выполнения... endwhile;

И примерчик:

$i = 1; while ($i <= 10) { print $i++; }

Do.. While.

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

do блок_выполнения while (выражение);

For.

Точно такой-же цикл как и в C++. Структура:

for (выражение1; выражение2; выражение3) блок_выполнения

Хотя - нет. Есть в PHP еще одно дополнение. Структура:

for (выражение1; выражение2; выражение3): блок_выполнения;...; endfor;

Обратите внимание, на двоеточие перед блоком выполнения.

Break.

Старо как мир. Этот оператор позволяет выскакивать из любого цикла (for, while, do.. while) до окончания его выполнения. Пример:

$i = 0; while ($i < 10) { if ($arr[$i] == "stop") { break; } $i++; }

Continue.

Тоже ничего нового. Этот оператор позволяет пропустить дальнейшее действия блока_выполнения любого цикла и продолжить выполнение с нового круга. Пример:

while (выражение) { if (выражение2) continue; действие; }

Такая програма аналогична следующей, без использования continue:

while (выражение) { if (!выражение2) действие; };

Switch.

Часто очень необходимый оператор выбора. Хотя все его и так знают, попробую представить ясный пример. Допустим у вас есть следующий участок в программе:

if ($i == 0) { print "i равно 0"; } else if ($i == 1) { print "i равно 1"; } else if ($i == 2) { print "i равно 2"; } else print " ниодно условие не прошло";

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

switch ($i) { case 0: print "i равно 0"; break; case 1: print "i равно 1"; break; case 2: print "i равно 2"; break; default: print " ниодно условие не прошло"; }

в таком представлении есть и еще одно преимущество. Если вы не поставите оператор break например перед case 1:, то в случае, когда $1 будет равен нулю после вывода на экран сообщения об этом программа пойдет дальше и выведет также сообщение о тов, что $I равна еще и 1 и только после, встретив break; продолжит свое выполнение за пределами switch.

Require.

Этот оператор действует примерно так-же как и #include в C++. Файл, указанный в кавычках включается в скрипт и выполняется, но только однажды. В файле, включаемом оператором require резонно хранить какие-то даные, необходимые для многих скриптов и соответсвенно влкючать его в эти "многие" скрипты. Структуа его такая:

require 'header.inc';

Include.

Структура:

include 'func.inc';

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

Обратите внимание. Разница между include и require довольно существенная, поэтому поэкспереминтируйти с ними сами, если вы ее так и не усмотрели.

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

 

 

Шаг 7. И снова PHP - продолжим, или галопом по европам!

Итак, описание основных конструкций языка (за исключением классов - о них позже) сделано! Теперь следует попрактиковаться на реальном проекте. Но прежде все же надлежит уделить внимание некоторой рутине - хотя бы бегло рассмотреть основной набор функций языка. Большая часть этих функций находится в подключаемых модулях, которые собираются во время линковки интерпретатора (под win32 наборы функций выполнены как dll-и). Исключения составляют некоторые особо популярные группы функций, встроенные в ядро интерпретатора (встраиваемость зависит от версии PHP). Например, в PHP версии 4 функции доступа к MySQL встроены в интерпретатор.

Под рассмотрение (причем весьма беглое) подпадет некоторое подмножество функций. Я исключу из рассмотрения функции, специфичные для SQL-серверов (кроме, MySQL - именно его мы будем использовать в наших проектах, а работа с остальными SQL-серверами выполняется аналогичным образом), и некоторые другие из числа редкоиспользуемых (мною не используемых?;).

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

Однако, приступим.

1. Функции, специфичные для Apache-сервера я пока опускаю, т.к. под win32 они не идут (если я правильно понял readme.txt из дистрибутива PHP, то и не должны идти - под win32 PHP живет в CGI-выполняемом режиме, а не как модуль apache). Под *nix-ом я пока проверить не имею возможности. Подождем до лучших времен.

2. Функции работы с массивами. Эта группа одна из самых многочисленных (если не самая многочисленная). Причем под PHP версии 4 она раза в два больше, чем под 3-й версией. Базовыми для обеих версий можно считать функцию конструирования массива array(), функции сортировки (штук 9), функции навигации по массиву (перемещение внутреннего указателя - подробности в следующих шагах), информационные функции (количество элементов массива и некоторые другие), выборка данных. Как я уже сказал, в 4-й версии добавлена большая группа функций array_xxxxx(), где xxxxx - предназначение. Например, array_push() добавляет элемент в конец массива. Эта группа отвечает за сравнения массивов, множественные операции (объединение, пересечение, разность и пр.), добавление/удаление элемент и некоторые другие операции.

3. 4 функции работы со словарем.

4. Математические функции над числами произвольной точности.

5. Функции работы с календарями.

6. Поддержка COM-объектов на win32-платформе.

7. В 4-й версии добавлены функции получения информации о классах в PHP.

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

В фидошной конференции по PHP на днях пробегала такая ссылка: http://it.sinor.ru/?isnum=4. Автор в этой статье описывает метод установки PHP как модуль Apache под win32. К сожалению мой апач обиделся до глубины души от предложения загрузить в качестве модуля php4apache.dll. А жаль. Прийдется ставить линукс. В прочем, может, у меня просто руки ни к тому месту прикручены?;)

Далее. Опять же на днях (вот везет!) попался мне один чудный сайт "Опыты" (http://exper.ural.ru). С огромным удовольствием прочитав его содержимое, я наткнулся на статью "Использование транслятора XML в PHP.", которая сильно повлияла на мои планы по дальнейшим шагам. Дело в том, что, используя функции XML-парсинга можно разрабатывать сайт на XML, а на выходе получить обычный HTML-файл. Что это дает? Самодокументируемый код, возможность генерить браузерозависимый код на сервере (а не тащить кучу кода на клиентскую машину и делать JavaScript-овые проверки версии браузера - на этом сайте, кстати, много материала посвящено различиям в интерпретации HTML- и JavaScript-кода браузерами IE и NN) и другие приятности. Мы в дальнейшем еще вернемся к теме XML.

Еще одна новость - издательство "Символ" решило учинить и на нашей улице праздник! (Не ищите на их сайте информацию об этих новинках - ее там нет! Я ничего не понимаю в их маркетинге.) На днях (опять же!) к нам пришла по почте книга, к которой прилагался рекламный буклет с планами издательства "Символ". Вот что я там узрел из их планов на конец этого - начало будущего года. Во-первых, Хариш Рават и др. Профессиональное программирование на PHP (!). 1100 страниц (!!). Я плакал!;)

От O'Reilly: Стивен Спейнауэр. Справочник вебмастера. 2-е издание. Брэт МакЛафлин и др. Java и XML.

Ну наконец-то! Вот ОНА: Ларри УОЛЛ. Программирование на Perl. 3-е издание. 1200 страниц (!!!)

Да-да. Та самая кэмэлбука! Далее. Аллигатор (классное имя;) Декарт (и фамилия;) и др. Программирование на Perl DBI. Дэвид Бланк-Эдельман и др. Perl для системного администрирования. Скотт Гуэлич. CGI-программирование на Perl.

Фух. Рука бойцов колоть устала. До следующего шага.

 

Шаг 8. Заканчиваем обзор Однако, продолжим рассмотрение (вернее, беглый обзор - что называется, голопом по европам) функций PHP. 8. Функции доступа к dbm-базам. 9. Функции даты и времени: получить, проверить правильность, вывести в формате. 10. Dbase-функции. Ну тут стандартный dbase-, clipper-, и_иже_с_ними-набор: открыть/закрыть, читать/писать/заменять/добавлять/удалять записи, получить количества колонок и записей в таблице. 11. Функции для работы с директориями: открыть/закрыть, читать, сменить каталог. 12. Так называемые dl-функции (вернее, одна единственная функция) - динамическая загрузка PHP-библиотеки в рунтайме. Статическая загрузка предполагает наличие в ini-файле PHP указания на загружаемые модули (разделы "extension" - сами модули, - и "extension_dir" - где эти модули искать). 13. Работа с DOM-объектами для XML-документов (для PHP 4-ой версии). 14. Один из самых многочисленных разделов - группа функций работы с файловой системой. С этой группой мы еще не раз столкнемся. Я думаю, этой группе следует посвятить отдельный шаг. 15. FTP-функции поддерживают весь стандартный набор команд ftp-протокола. 16. Чрезвычайно ценные HTTP-функции (их всего 3) позволяют управлять HTTP-заголовком. Вот пример, в котором без функции header() вообще нельзя обойтись. Вы формируете картинку PHP-кодом (до image-функций мы еще доберемся). Если не сказать перед передачей картинки браузеру header("Content-type: image/gif"), то в заголовке HTTP-запроса будет утверждаться, что пришедший от сервера файл имеет тип text/html. 17. Image-функции позволяют создавать PNG- и Jpeg-файлы "налету" (поддержка gif-формата с 4-ой версии PHP прекращена в связи с проблемой лицензирования; впрочем, существуют сборки php_gd.dll с поддержкой gif-ов), рисовать графические примитивы, выводить в картинке текст и читать существующие картинки. 18. IMAP-функции позволяют работать с imap-ящиками (чтение, проверка, посылка письма, работа с заголовками писем, с почтовыми ящиками, ping-и, mail-адреса, всякие там en-/decode, base64 и прочее). 19. Математические функции (а как же без них!). 20. Функции шифрования и хеш-функции (список поддерживаемых алгоритмов занимает 2 строки). 21. Что называется, минеслаус-функции: проверка коннекта, define-функции, eval (выполнение строки как скрипта), работа с аргументами функций (4-я версия), сериализация, sleep и пр. 22. MySQL-функции. Им будут посвящены несколько шагов. 23. Сетевые функции: NDS, ip-адреса, связь номера и имени сетевого протокола и пр. 24. ODBC-функции. 25. Очень полезная группа функций, возвращающих информацию о состоянии и настройках PHP-интерпретатора, записывающих сообщения в log-файлы, читающих окружения интерпретатора. Самая эффектная - phpinfo();). Откройте в браузере файл http://localhost/info.php3, содержащий такой текст:
<html><body><?php phpinfo();?></body></html>

26.
Увидите чудо!

27. Четыре функции для запуска внешних программ. Вернее три, четвертая (escapeshellcmd) предназначена для экранирования символов "<", ">", "|" и некоторых других. Дело в том, что вызов внешней программы из скрипта - потенциально опасное действие. Не проверив содержимое строки, передаваемой в качестве параметра таким функциям, как eval(), можно создать потенциальную брешь для злоумышленников. Посмотрите, что выведет на экран такая конструкция: echo escapeshellcmd("echo y| format c:").

28. Само собой, что в PHP есть функции работы с регулярными выражениями.

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

30. Огромный список функций работы со строками (включая функцию для конвертации кириллицы в разные кодировки! - наверное, изобилием кодировок мы уже весь мир достали;).

31. Семь функций работы с URL: base64, разбор URL-строки на части (хост, порт, путь и т.д.), а также кодировка строки с заменой неанглийских символов и пробелов 16-ричными цифрами с лидирующим "%" и обратно (очень помогает при работе с файлами, имеющими русские буквы в названии).

32. Функции проверки PHP-переменных на инициализированность (ух какое словечко получилось!;), принадлежность определенному типу (число, строка и пр.) и т.п.

33. XML-функции (парсинг XML-тегов). В прошлом шаге я давал ссылку на сайт, где эта тема очень хорошо освещена.

Фух. На этом беглый обзор закончим. В следующих шагах займемся более детальным рассмотрением функциональных групп на конкретных примерах.

 

Шаг 9. Первый проект - начало. MySQL Очень надеюсь, что обзор возможностей был не слишком утомителен. Я дума
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...