|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>PHP. Шаг за шагом.</title>
<meta content="text/html; charset=Windows-1251" http-equiv=Content-Type>
</head>
<LINK REL=STYLESHEET HREF="php.css" TYPE="text/css">
<body text=black bgcolor=white link=blue vlink=blue alink=red>
<center>
<a name="top">
<TABLE borderColor=#000000 cellSpacing=1 cellPadding=1 width=600 border=0 align="center">
<tr><td>
<tr><td>
<H1>ШАГ 3. С чего начинается Родина? (основы языка)</H1>
<p>
С картинки в родном букваре ;) то есть с чтения (или хотя бы просмотра)
документации. Не пугайтесь. В конце - концов, если вы собираетесь работать на
php вам когда-либо все равно придется заглянуть туда и лучше, если вы это
сделаете сейчас, благо мануал у php очень удобный, легкий, не требующий
длительного штудирования, но основы языка нужно знать и без чтения тут никак не
обойтись.</p>
<div class=em>Вообще я потратил не мало времени за написанием скриптов на php и
если это время можно измерить сотнями часов, то время, потраченное на поиск
нужных функций или решение проблем с осуществлением каких-либо специфических
операций, в общем время просиженной за документаций, как ни странно, не более одного часа! Так
что еще раз повторю - не пугайтесь и флаг (очки) вам в руки.</div>
<p>Начнем с того, что для PHP сущестует 4-е способа
отделения его от общего кода HTML (имеется ввиду для интерпретации)</p>
<div class=code>
<PRE>1. <? echo ("SGML инструкции\n"); ?>
2. <?php echo("XML документ\n"); ?>
3. <script language="php">
echo ("специально для FrontPage");
</script>
4. <% echo ("ASP-стиль"); %>
<%= $variable; # Комментарий "<%echo .." %>
</PRE>
</div>
<p>Далее необходимо коненчо сказать и о том, что инструкции в PHP отделяются друг от друга сишно-паскалевско-перловым способом - точкой с запятой. Хотя перед закрывающим тегом (<code>?></code>) точку с запятой ставит не обязательно.</p>
<div class=code><pre><?php echo "This is a test";
echo "This is a test also" ?></pre></div>
<p>PHP поддерживает комментарии в стиле 'C', 'C++' и Unix shell. Например:</p>
<div class=code><pre> <?php
echo "test"; // Комментарий в стиле C++
/* Это многострочный
комментарий в стиле C++*/
echo "test2";
echo "Test3"; # Это unix-shell комментарий
?> </pre></div>
<h2>ТИПЫ</h2>
<ul>PHP поддерживает следующие типы данных:
<li>integer (целочисленные)
<li>floating-point numbers или double (числа с плавающей запятой)
<li>string (строки, текст)
<li>array (массивы)
<li>object (обьекты)
</ul>
<p>Преобразование типов происходит следующим образом. Если переменной при равнивается строка (текст в кавычках) то эта переменная становится строковой. Если-жы с ней совершается одна из многих математических функций или она приравнивается численой переменой, она становится численной, причем если приравниваетс яне целому значению - то станет типом double. Пример:</p>
<div class=code>$foo = "0"; // $foo строка (ASCII 48)<br>
$foo++; // $foo тоже строка "1" (ASCII 49)<br>
$foo += 1; // $foo теперь integer (2)<br>
$foo = $foo + 1.3; // $foo теперь double (3.3)<br>
$foo = 5 + "10 паросят"; // $foo теперь снова integer (15)<br>
$foo = 5 + "10 ящиков"; // $foo и по прежнему integer (15)
<div class=comment>значение в скобках - результирующее значение переменной</div>
</div>
<p>Преобразовывать типы можно чистА в сишном стиле:</p>
<div class=code>$foo = 10; // $foo это integer<br>
$bar = (double) $foo; // $bar это double</div>
<ul>
Разрешенный преобразования:
<li>(int), (integer) - cast to integer
<li>(real), (double), (float) - cast to double
<li>(string) - cast to string
<li>(array) - cast to array
<li>(object) - cast to object
</ul>
<p>К стати, определить тип переменной можно функциями <code>gettype(), is_long(), is_double(), is_string(), is_array() и is_object().</code></p>
<h2>ОБЛАСТЬ ВИДИМОСТИ ПЕРЕМЕННЫХ</h2>
<p>Во-первых. Все переменные начинаются с символа <code>$</code></p>
<p>Во-вторых существуют границы определения переменных. Например что-бы использовать глобальные переменные в функциях, необходимо их сначала декларировать как глобальные, иначе вы будете исопльзовать локальные переменные. Поясню на примере:</p>
<div class=code>
$a = 1; /* глобальное определение */<br>
Function Test () { <br>
$a=2;<br>
echo $a; /* локальная переменная */ <br>
} <br>
Test ();<br>
echo $a;<br>
</div>
<p>Таким образом в функции используется локальная, собственная переменная и результатом прогарммы будет вывод чисел 2 и 1, а не 2 и 2, как некоторые могли подумать.</p>
<p>Ну а если вы хотите в функции использовать глобальные переменные, необходимо сделать так (декларировать с помощью оператора <code>global</code>):</p>
<div class=code>
$a = 1; /* глобальное определение */ <br>
Function Test () { <br>
global $a;<br>
$a=2;<br>
echo $a; /* локальная переменная */ <br>
} <br>
Test ();<br>
echo $a;
</div>
<p>Теперь в функции вы переопредилили глобальную переменную и вывод будет числа 2 и 2. Но есть и другой способ добраться до глобально-определенных данных - через ассоциативный массив <code>$GLOBALS[]</code>. Пример предыдущей программы, реализованный новым способом:
</p>
<div class=code>
$a = 1; /* глобальное определение */ <br>
Function Test () { <br>
$GLOBALS["a"]=2;<br>
echo $a; /* локальная переменная */ <br>
} <br>
Test ();<br>
echo $a;
</div>
<p>Обратите внимание переменная в массиве указывается без символа <code>$</code></p>
<p>Кроме этог о PHP предоставляет возможность исопльзовать статические переменный. Все как в C/C++.</p>
<div class=code>
Function Test () { <br>
static $a = 0; <br>
echo $a;<br>
$a++;<br>
}<br>
Test();<br>
Test();<br>
Test();<br>
</div>
<p>Результатом выполнения этого скрипта будет вывод чисел <code>0,1 и 2</code>.</p>
<h2>ПЕРЕМЕННЫЕ ПЕРЕМЕННЫЕ</h2>
<p>Скорее всего скоро вам понадобятся переменныес динамически (в ходе работы скрипты) изменяемым наименованием. Поясню на пример, что я имею ввиду:</p>
<div class=code>
$a = "hello";
$$a = "world";
</div>
<p>Данная запись означает, что переменной с именем <code>a</code> мы присваиваем значение <code>"hello"</code>. Следующей операцией переменной с именем, хранящимся в переменной с именем <code>a</code>, то есть - переменной <code>hello</code> мы присваиваем занчение <code>"world"</code></p>
<div class=code>
echo "$a ${$a}";
</div>
<p>тоже самое, что и</p>
<div class=code>
echo "$a $hello";
</div>
<p>В результаты мы получим на экране <code>hello world</code></p>
<p>Дело ненмого усложняется, если вы хотите использовать подобные массивы. Ведь есл вы запишете <code>$$a[1]</code> - интерпретатору надо будет знать, что использовать в качестве переменной - <code>$a</code> или <code>$$a</code> (имя, зранящееся в <code>$a</code>). В таком случаем вам прийдется исопльзовать следующий синтаксис - <code>${$a[1]}</code> в случае, если вы хотите использовать переменную с именем, зранящимся в массиве <code>$a</code> с индексмо <code>1</code> и <code>${$a}[1]</code> в другом случае (если вы хотите использовать элемент <code>1</code> массива с именем, зранящимся в переменной <code>$a</code>.</p>
<p>Надеюсь все понятно. До следующего выпуска!</p>
<ul class=href>Ссылки на документацию по php:
<li class=href><A href="http://www.php.net/docs.php3">http://www.php.net/docs.php3</A> - on line список форматов документации.<br>
<li class=href><A href="http://www.php.net/distributions/manual.zip">http://www.php.net/distributions/manual.zip</A> - рекомендуая мной документация в формате HTML.<br>
</ul>
</td></tr>
<tr><td id="menu" class=menu>
<center><a href=#top class=menu>ВВЕРХ</a></center><br>
<center><a href=php2.html class=menu><<<предыдущий шаг</a>
<a href=php4.html class=menu>следующий шаг>>></a>
</center></td></tr>
</TABLE>
</div>
</body>
</html>