Открыть меню    

Основы php, заметки

типы в PHP

Скалярные:

boolean (true вернет 1, false вернет ‘’ - пустую строку ), integer, float(число с плавающей точкой),string(строка)

Смешанные

Array, object

Специальные

php resourse, null (NULL, варианты: переменной присвоена константа NULL, переменной еще не было присвоено какое-либо значение, переменная была удалена с помощью функции unset() )

Ошибки PHP

PHP

error_reporting(0); // отключаем вывод всех ошибок
error_reporting(E_ALL); // включаем

echo

echo можно использовать так:

PHP

echo ‛hello, ‛,‛Ваня ‛, $per;
    // запятая здесь равнозначна конструкции echo ;

Короткая запись echo:

PHP

<?=$name?>

Но должен быть включен short open tag

Операторы сравнения

Пример Название
$a == $b Равно
$a === $b Тождественно равно
$a != $b Не равно
$a <> $b Не равно
$a !== $b Тождественно не равно
$a < $b Меньше
$a > $b Больше
$a <= $b Меньше или равно
$a >= $b Больше или равно

Неочевидный синтаксис PHP

Экранирование переменных:

PHP

echo ‛сюда пришли какие-то {$people}s ‛;

Получаем первый символ строки:

PHP

$str = ‛Привет, мир‛;
$first = $str{0}; echo $first; // П
Echo $str{1}; // р

Второй путь получить первый (и не только) символ строки:

$str = 'Привет, мир';
$first = $str[0]; 
echo $first; // П

Целочисленный остаток от деления:

PHP

$a= 5; $b =2;
$c = $a % $b;
Echo $c; // 1

PHP

$a += $b; // эквивалентно $a = $a + $b;

Простые полезные функции PHP

PHP

Isset(имя_переменной); //возвращает true или false
Empty(имя_переменной); //см. Таблицу
gettype(имя_переменной); // получаем тип переменной в виде строки (NULL, integer, string, double (это float),boolean)
settype(имя_переменной, «тип»);  //конвертируем переменную в нужный  тип данных
(тип) имя_переменной; // Приведение переменной к типу

Сравнение типов и результатов функций

Выражение gettype() empty() is_null() isset() логическое if($x)
$x = ""; строка TRUE FALSE TRUE FALSE
$x = NULL NULL TRUE TRUE FALSE FALSE
$x неопределена NULL TRUE TRUE FALSE FALSE
$x = array(); массив TRUE FALSE TRUE FALSE
$x = false; логич. TRUE FALSE TRUE FALSE
$x = true; логич. FALSE FALSE TRUE TRUE
$x = 1; целое FALSE FALSE TRUE TRUE
$x = 12; целое FALSE FALSE TRUE TRUE
$x = 0; целое TRUE FALSE TRUE FALSE
$x = -1; целое FALSE FALSE TRUE TRUE
$x = "1"; строка FALSE FALSE TRUE TRUE
$x = "0"; строка TRUE FALSE TRUE FALSE
$x = "-1"; строка FALSE FALSE TRUE TRUE
$x = "you"; строка FALSE FALSE TRUE TRUE
$x = "true"; строка FALSE FALSE TRUE TRUE
$x = "false"; строка FALSE FALSE TRUE TRUE

Тернарный оператор PHP

PHP

echo $name=="John" ? "Johnson" : "Bad";
// Bad

Лучше всего понять на простом примере: если переменной name присвоено значение John, то выводится фамилия Johnson, иначе Bad.

Альтернативный синтаксис для if, else, elseif PHP

switch

PHP

switch ($i) {
    case 0:
        echo "i = 0";
        break;
    case 1:
        echo "i = 1";
        break;
    case 2:
        echo "i = 2";
        break;
    default:
       echo "i != 0, 1 или 2";
}

Получаем значение любой директивы из php.ini

PHP

ini_get(‛имя_директивы‛);
echo ini_get("post_max_size"); // 8M

Массивы php

Создание массива - функция array:

PHP

$arr = array();

$arr = array('John',
             'Bob'
             );

$arr = array(1=>'John',
             2=>'Bob'
             );

$arr = array('name'=>'John',
             'family'=>'Bob'
             );

Число элементов в массива - функция count:

PHP

count($arr);

Выводим адекватную структуру массива - функция prinr_r:

PHP

echo "<pre>";
prinr_r($arr);
echo "</pre>";

Выводим ПОДРОБНУЮ структуру массива - функция var_dump:

PHP

echo "<pre>";
var_dump($arr);
echo "</pre>";

Многомерный массив: Многомерный массив PHP Вывод при помощи FOREACH

Полезные функции при работе с массивами PHP

PHP

echo current($arr);
//Функция current() возвращает значение элемента массива, на который указывает его внутренний указатель

echo next($arr);
//next — Передвигает внутренний указатель массива на одну позицию вперёд

echo prev($arr);
//prev — Передвигает внутренний указатель массива на одну позицию назад

echo end($arr);
//end — Передвигает внутренний указатель массива к последнему элементу массива

echo reset($arr);
//reset — Передвигает внутренний указатель массива к первому элементу массива

key($arr);
// получаем ключ того элемента массива, на который в данный момент указывает внутренний указатель массива

Константы PHP

PHP

define('имя_константы','значение');
define('CIFRA',8888);
echo CIFRA; //8888

defined('CIFRA'); // проверка константы, возвратит true, если константа существует
echo defined('CIFRA'); //1

Принято обозначать большими буквами. Константы, как правило, неизменны (нельзя поменять через присваивание, нельзя удалить через функцию unset()).

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

Псевдо константы PHP

Псевдо константы – имя зашито, а значение может меняться. Имя начинается и заканчивается с двойного подчеркивания.

PHP

echo __LINE__;
    // Пседо константа __LINE__ вернет номер текущей строки (для кода)

// __FILE__ вернет полный пыть к файлу
// __FUNCTION__ вернет имя функции

Встроенные константы PHP

PHP

echo PHP_VERSION;
// вернет версию PHP

// PHP_CONFIG_FILE_PATH путь к php.ini

Предопределенные переменные

PHP

$GLOBALS //Массив, содержащий все переменныеиз глобального диапазона
$_ENV //Массив переменных среды, существовавших при запуске сценария
$_COOKIE //Массив файлов cookie отправленных с браузера на сервер
$_GET //Массив, содержащий значения всех полей, переданных методом GET
$_POST //Массив, содержащий значения всех полей, переданных методом POST
$_FILES //Массив, содержащий всю информацию о загруженных файлах
$_REQUEST //Массив, содержащий переменные
_GET, _POST, _COOKIES и _FILES
$_SESSION //Массив переменных размещенных во встроенных сеансах РНР

Инкремент и декремент

++ увеличиваем значение переменной на 1;

-- уменьшаем значение переменной на 1;

PRE инкремент и декремент
++$a; увеличивает $a на 1 и возвращает $a
--$a; уменьшает $a на 1 и возвращает $a
POST инкремент и декремент
$a++; возвращает значение $a и лишь затем увеличивает $a на 1
$a--; возвращает значение $a и лишь затем уменьшает $a на 1

Циклы PHP

Цикл for

PHP

for
(
    как правило здесь инициал-ся счетчик;
    проверяем на истину( можно сказать,"if");
    как правило, меняем счетчик
)
{
    код;
}
//--------------------------------------
        for( $i = 1; $i <= 5; $i += 1 )
        {
            echo $i."<br/>";
        }
        //1
        //2
        //3
        //4
        //5

Цикл while

PHP

while(условие)
{

}
//--------------------------------------
    $i = 0; $a = 0;
    while($i <= 5)
    {
        $i++;
        $a += $i;  echo $a."<br/>" ;
    }
    //1
    //3
    //6
    //10
    //15
    //21

break

break - оператор break "выбрасывает" нас из цикла


continue

continue - оператор continue "выбрасывает" нас из цикла к УСЛОВИЮ


Цикл do...while

В отличие от цикла while, цикл do while будет выполнен всегда хотя бы один раз

Цикл foreach

PHP

foreach(массив as какая-нить переменная(сами придумываете)){
// при каждой итерации будет браться значение из 'ячеек' массива и оно
// (значение) будет закидываться в 'какая-нить переменная'
}

foreach($arr as $a){
echo $a;
}

//------------------------

foreach(массив as КЛЮЧ(сами придумываете) => какая-нить переменная(сами придумываете)){
// при каждой итерации будет браться значение из 'ячеек' массива и оно
// (значение) будет закидываться в 'какая-нить переменная'
}

foreach($arr as $key => $a){
echo $key."=".$a;
}

Полезные нюансы при работе с функциями PHP

PHP

function_exists(function_name); // проверяем, существует ли функция
// если ф-я есть вернется true

function hello(){ echo "Hello";}
$v = 'hello';
$v(); // что равнозначно вызову ф-и hello();

//в ф-ю должны передаваться сначала обязательные аргументы, а  потом необязательные
// и никак иначе
function test($a,$b,$c=10) {}
test(12,13); // необязательный опущен

// результат функции можно возвратить при помощи оператора return
function summa($a,$b) { return $a + $b; }
$res = summa(10,10);
echo $res; //20

Получаем список всех доступных функций (некоторые функции можно использовать лишь подключив необходимое расширение).

PHP

echo "<pre>";
print_r(get_defined_functions());
echo "</pre>";

В своих функциях лучше всего что-то возвращать (например, true или false): так мы всегда сможем проверить правильность работы функции.

ПЕРЕМЕННЫЕ

PHP

$age = 10;  // в любой функции (в локальной области видимости)
            //к этой переменной можно обратиться двумя способами: $CLOBALS['age'] или global $age

//любая переменная созданная в глоб. области видимости является глобальной то есть:

$age = 10000;
function getN(){ echo $GLOBALS['age']; } // 10000

$CLOBALS['age'] = 10;
//глобальную переменную (будет доступна и в функции, даже если не передать ее как параметр) можно объявить так:
global $age;
// все наши глобальные переменные (созданные на верхнем уровне)
// лежат в массиве GLOBALS

function test() {
    $a = 0; // это локальная переменная, живет пока работает ф-я
    echo $a++;
}
test(); // 0
test(); // 0

function test() {
    static $a = 0; // это статическая переменная, и компилятор не будет ее удалять после завершения работы  функции
    echo $a++;
}
test(); // 0
test(); // 1
test(); // 2 

Ссылки PHP

PHP

$a = 8;
$b = &a; // $b является ссылкой на переменную $a

Встроенные функции PHP

Документация PHP: www.php.net/docs.php

Часто используемые функции для работы с ПЕРЕМЕННЫМИ:

PHP

is_float(expr)
is_integer(expr)
is_numeric(expr)
is_string(expr)
is_null(expr)
is_array(expr)
is_bool(expr)
intval(expr [, int base]) //Возвращает целочисленное значение аргумента.
floatval(expr) //Возвращает вещественное значение аргумента.

Часто используемые МАТЕМАТИЧЕСКИЕ функции в PHP:

PHP

max  //  Возвращает наибольшее число из заданых.
acos // Возвращает значение арккосинуса значения.
cos  //  Возвращает косинус числа в радианах.
min  //  Возвращает наименьшее число из заданых.
decbin  //  Возвращает двоичное представление целого числа.
log  //  Возвращает натуральный логарифм значения.
pi  //  Возвращает приблизительное число пи.
rad2deg  //  Возвращает в градусах значение аргумента заданного в радианах.
round  //  Возвращает округленное до ближайшего целого числа значение заданное аргументом.
sqrt  //  Извлечение квадратного корня из числа.
rand  //  Возвращает число, лежащее между двумя необязательными аргументами включительно.

Часто используемые функции для обработки СТРОК в PHP:

PHP

addslashes // Экранирует спецсимволы в строке.
stripslashes // Разэкранирует спецсимволы в строке.
explode // Разбивает строку на подстроки.
htmlentities // Преобразует символы в соответствующие HTML сущности.
trim // Удаляет пробелы из начала и конца строки.
str_replace // Заменяет строку поиска на строку замены.
strip_tags // Удаляет HTML и PHP тэги из строки.
strlen // Возвращает длину строки.
strpos // Возвращает позицию первого вхождения подстроки.
strstr // Находит первое вхождение подстроки.
substr  //  Возвращает подстроку
nl2br // Вставляет HTML код разрыва строки перед каждым переводом строки 

Часто используемые функции при работе с МАССИВАМИ в PHP:

PHP

array_pop // Извлечь последний элемент массива.
array_shift // Извлечь первый элемент массива.
array_rand // Выбрать одно или несколько случайных значений из массива.
array_reverse // Возвращает массив с элементами в обратном порядке.
count // Посчитать количество элементов массива или количество свойств объекта.
in_array // Проверить, присутствует ли в массиве значение.
array_key_exists // Проверить, присутствует ли в массиве ключ.
implode // Объединить элементы массива в строку.

Читаем описание функции на примере php.net

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

Определение функции на примере функции PHP isset:

isset — Определяет, была ли установлена переменная значением отличным от NULL

(PHP 4, PHP 5) – на php.net расположено справа от определения функции и обозначает в каких версиях PHP встречается функция.

Описание функции PHP на примере функции isset:

PHP

bool isset ( mixed $var [, mixed $... ] )
// квадратные скобки указывают на необязательность параметра
// слова, стоящие переда параметрами, это ожидаемые типы
// mixed - это псевдотип (такого типа нет), то есть можно передать больше чем один тип
// перед именем функции стоит тип, то есть, что возвращает функция

Список параметров

Здесь располагается подробное описание (не всегда) передаваемых параметров.

Возвращаемые значения

Здесь располагается подробное описание того (не всегда), что возвращает функция.

Функция header, отправляем заголовки браузеру,примеры

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

Статья по теме: Протокол HTTP (hypertext transfer protocol)

PHP

header("Location: test.php"); // перенаправляем пользователя на test.php

PHP

header("Refresh: 100"); // перезагрузить страницу через каждые 100 секунд

header("Refresh: 100; url=// перенаправляем пользователя на dnzl.ru через 100 секунд
// аналог Location, но с задержкой

header("Content-type: text/xml"); // принудительно устанавливаем тип контента (файла)

header("Content-type: text/xml;
charset=utf-8"); // отдаем с кодировкой

Кэширование PHP

Header: Cache-Control и Expires
Заголовки Cache-Control для кэширования, а Expires задает дату (на сколько кэшировать).

Кэшировать надо не только страницы, но и запросы.

PHP

header("Cache-Control:  no-cache");
// no-cache - это не запрет кэширования
//(хотя теоретически большинство браузеров не закэшируют требуемую страницу,
// но только в том случае, если  пользователь закроет страницу);
// а вот при обновлении (запросы) страница кэшироваться не будет
// этим мы как бы говорим браузеру:
// перед тем как поднять контент из кэша, проверь -  не обновилась ли страница,
// если страница  не измелась, то страница поднимется из кэша,
// соответственно, при запросе страница поднимется из кэша

// ЗАПРЕТ НА КЭШИРОВАНИЕ:
header("Cache-Control:  no-store");
//или
header("Cache-Control:  no-store, no-cache,must-revalidate");
header("Expires:" . date("r"));

//Разрешение (хотя браузеры и так кэшируют)
header("Cache-Control:  public");
header("Expires:" . date("r",time()+3600));

Работа с сессиями PHP

Куки php, cookie

Работа с файлами в PHP

Работа с директориями в PHP

PHP

//Создание директории
mkdir(string dirname[, int mode]) // !0777 (0777 - всем все можно)

//Удаление директории
rmdir(string dirname) // только пустая!
// Последовательно при работе с директориями:
$dir = opendir(string dirname) // Открываем директорию

$name = readdir($dir) // Читаем директорию

closedir($dir) // Закрываем директорию

is_file(name) // Это файл?

is_dir(name) // Это директория?

scandir(string dirname [, int order]) // Сканируем директорию
// Вернет массив того, что есть в директории

Комментарии к статье