Новые книги

Сколько бы денег мы ни тратили на рекламу магазина, какие бы ни устраивали акции или распродажи, магазин не будет приносить прибыль без четкой и слаженной работы сотрудников. Посетители магазина превратятся в покупателей, только если магазин будет чистым, если продавцы будут встречать клиентов с приятными улыбками, если персонал всегда будет готов помочь и если директор будет грамотно управлять сотрудниками. В своей книге Виктория Ламанова, много лет руководившая розничными магазинами, рассказывает, как заставить ваш магазин работать как часы. Автор делится рекомендациями, основанными на собственном практическом опыте работы в России. Вы узнаете об отточенных в реальной жизни методиках составления регламентов, способствующих повышению эффективности работы сотрудников и увеличению продаж, об анализе деятельности магазина, об оценке работы персонала, мотивации и обучении сотрудников.
Продолжение книги "Внутреннее устройство Microsoft Windows" — 5 и 7 главы.

XXIV. Дополнительные функции

XXIV. Дополнительные функции


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

eval


eval -- Производит выполнение строки содержащей PHP код

Описание


void eval(string code_str);
 
eval() производит выполнение строки, данной в code_str содержащей PHP код. Кстати, это может пригодиться для сохранения кода в текстовом поле базы данных для более позднего выполнения.

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

Также не забудьте, что при изменении переменных значений в eval() эти переменные будут изменены и в основных данных.
 

Пример 1. eval()  - простое объединение текста
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.<br>';
echo $str;
eval( "\$str = \"$str\";" );
echo $str;
?>
      

При выполнении вышеприведенного примера будет выведено следующее:

This is a $string with my $name in it.
This is a cup with my coffee in it.

die


die -- Вывод сообщения и завершение текущего скрипта

Описание


void die(string message);
 
Эта функция выводит сообщение и прекращает выполнение текущего скрипта. Не возвращает значение.
 
Пример 1. die 
<?php
$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
  or die "unable to open file ($filename)";
?>
      

exit


exit -- Завершает текущий скрипт

Описание


void exit(void);
 
Эта функция завершает текущий скрипт.  Не возвращает значение.

iptcparse


iptcparse -- Анализирует двоичный IPTC http://www.xe.net/iptc/ блок на одиночные тэги.

Описание


array iptcparse(string iptcblock);
 
Эта функция анализирует двоичный блок IPTC на одиночные теги.  Возвращает массив, использующий tagmarker как индекс и значение как значение. Возвращает false при ошибке или если никаких IPTC данных не было найдено. См. GetImageSize() для примера.

leak


leak -- Отсечение куска памяти

Описание


void leak(int bytes);
 
Leak() отсекает определенный объем памяти.

Это полезно при отладке диспетчера памяти, который автоматически очищает "отсеченную" память при выполнении запроса.

pack


pack -- упаковывает данные в двоичную строку

Описание


string pack(string format, mixed [args]...);
 
Упаковывает данные в двоичную строку согласно формату. Возвращает двоичную строку, содержащую данные.

Идея на эту функцию принималась из Perl и всей работы кодов форматирования также как там. Строка формата состоит из кодов формата, сопровождаемые факультативным параметром ретранслятора. Параметр ретранслятора может быть или целочисленное значение или * для повторение до конца входных данных. Для a, A, h, H количество повторов определяет, сколько принимается символов одного параметра данных, для @ это безусловная позиция, где поместить следующие данные, для всего остального количество повторов определяет сколько данных будет использовано и упаковано в возникающую в результате двоичную строку. В настоящее время выполнено:
 

    a строка NUL-заполнений

    A строка SPACE-заполнений

    h Hex строка, младший полубайт вначале

    H Hex строка, старший полубайт вначале

    c signed char

    C unsigned char

    s signed short (всегда 16 бит, machine byte order)

    S unsigned short (всегда 16 бит, machine byte order)

    n unsigned short (всегда 16 бит, big endian byte order)

    v unsigned short (всегда 16 бит, little endian byte order)

    i signed integer (machine dependant размер и byte order)

    I unsigned integer (machine dependant размер и byte order)

    l signed long (всегда 32 бит, machine byte order)

    L unsigned long (всегда 32 бит, machine byte order)

    N unsigned long (всегда 32 бит, big endian byte order)

    V unsigned long (всегда 32 бит, little endian byte order)

    f float (machine dependent размер и representation)

    d double (machine dependent размер и representation)

    x NUL байт

    X Копирует один байт

    @ NUL-Заполнение до конкретной позиции

Пример 1. pack форматируем строку
$binarydata = pack(" nvc* ", 0x1234, 0x5678, 65, 66);
Возникающая в результате двоичная строка будет длиной 6 байтов и содержать последовательность байтов 0x12, 0x34, 0x78, 0x56, 0x41, 0x42. 

Обратите внимание, что различие между знаковыми и без знаковыми значениями эффективно только для функции unpack(), так как  функция pack() дает тот же самый результат для знаковых и без знаковых кодов форматирования.

Также обратите внимание, что PHP хранит интегральные значения как значения со знаком и имеет machine dependant размер. Если вы делаете без знака, то интегральное значение будет сохранено и сконвертировано, при этом конечный результат будет неизвестен.

register_shutdown_function


register_shutdown_function -- Устанавливает функцию, которая будет выполнена при завершении.

Описание


int register_shutdown_function(string func);
 
Устанавливает функцию с именем func, которая будет выполнена при завершении.

serialize


serialize -- Генерирует удобохраниемое представление значения

Описание


string serialize(mixed value);
 
serialize() возвращает строку состоящую из потока байтов при представлениизначения value, которое может где-нибудь сохранено.

Это полезно для сохранения или передачи значений PHP  без потери их типа и структуры..

Чтобы преобразовать строку обратно в PHP значение, используйте unserialize(). serialize() обрабатывает следующие типы: integerdoublestringarray (многомерный) и object (объект будет преобразован в последовательную форму, но методы при этом будут утеряны).
 

Пример 1. serialize 
// $session_data содержит многомерный массив с информацией о сессии 
// текущего пользователя.  Мы используем serialize() для сохранения
// этого в базе данных в конце запроса.

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
                     "UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array(serialize($session_data), $PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata)) {
    $stmt = odbc_prepare($conn,
                         "INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!odbc_execute($stmt, &$sqldata)) {
        /* Что-то сделано неправильно. */
    }
}

sleep


sleep -- Задержка выполнения

Описание


void sleep(int seconds);
 
Sleep фукция выполняет задержку выполненя программы в секундах (seconds).

См. также usleep().

unpack


unpack -- Распаковывает данные из двоичной строки

Описание


array unpack(string format, string data);
 
Распаковывает данные из двоичной строки в массив согласно формату. Возвращает массив, содержащий распакованные элементы.

Unpack работает не так как в Perl поскольку распакованные данные сохранены в ассоциативном массиве. Чтобы сделать это, Вы должны установить различные коды формата, и отделить их наклонной чертой вправо /.
 

Пример 1. Распаковываем строку
$array = unpack("c2chars/nint", $binarydata);
Возникающий в результате массив будет содержать "chars1", "chars2" и "int". 

Для объяснения кодов формата см. также: pack()

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

unserialize


unserialize -- создает PHP значение из сохраненного представления

Описание


mixed unserialize(string str);
 
unserialize() берет одно сохраненное значение  (см. serialize()) и преобразует обратно в PHP значение. Возвращает преобразованное значение, и может иметь тип: integerdoublestringarray или object. Если был преобразован object, то методы не востановятся.
 
Пример 1. unserialize 
// Здесь мы используем unserialize() для загрузки данных о сессии из базы данных
// в $session_data.  Этот пример дополняет описанный в месте
// с serialize().

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {
    // Если сбой запуска или выборки , то инициализируем массив
    $session_data = array();
} else {
    // Мы должны иметь представление в $tmp[0].
    $session_data = unserialize($tmp[0]);
    if (!is_array($session_data)) {
        // Что-то неправильно, инициализируем массив
        $session_data = array();
    }
}

uniqid


uniqid -- генерирует уникальный идентификатор

Описание


int uniqid(string prefix);
 
uniqid() возвращает уникальный идентификатор, основанный на текущем времени в микросекундах. Префикс может быть полезен, например, если Вы генерируете идентификаторы одновременно на отдельных хостах, которые, могли бы случилось,  генерировали идентификатор в одной и той же микросекунде. Префикс может быть длиной до 114 символов.

Если Вы нуждаетесь в уникальном идентификаторе или лексеме(маркере), и Вы предполагаете раздавать эту лексему(маркер) пользователю через сеть (то есть сеанс cookies), то рекомендуется, чтобы Вы использовали что - нибудь со строками

$token = md5(uniqid("")); // Не произвольно
$better_token = md5(uniqid(random())); // Намного лучше, труднее подобрать
Это создаст 32 символьный идентификатор (128 бит hex число) который чрезвычайно трудно предсказать.

usleep


usleep -- Задержка выполнения в микросекундах

Описание


void usleep(int micro_seconds);
 
Задержка выполнения программы в микросекундах(micro_seconds).

См. также sleep().

[Назад][Содержание][Вперед]