Шаг 3 - С чего начинается Родина? (основы языка)

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

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

Начнем с того, что для PHP существует четыре способа отделения его от общего кода HTML (имеется ввиду для интерпретации)

1.  <? echo ("SGML инструкции\n"); ?>
 
2.  <?php echo("XML документ\n"); ?>

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

4.  <% 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 поддерживает следующие типы данных:

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

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

Кстати, определить тип переменной можно функциями 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.

ПЕРЕМЕННЫЕ ПЕРЕМЕННЫЕ

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

$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.

Надеюсь все понятно. До следующего выпуска!


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Pismenny Danil - 03.03.2000