Руководство по РНР 3.0

нлп | ремонт холодильников в балашихе



Руководство по РНР 3.0 (часть 13)


    Пример 0-1. Изменение: старые открывающий и закрывающий тэги:
    Пример 0-1. Изменение: старые открывающий и закрывающий тэги: ? echo This is PHP/FI 2.0 code.\n; Начиная с версии 2.0, PHP/FI поддерживает также следующий формат:...
    Пример 0-2. Изменение: новые открывающий и закрывающий тэги, первый вариант:
    Пример 0-2. Изменение: новые открывающий и закрывающий тэги, первый вариант: ? echo This is PHP 3.0 code!\n; ? Заметьте, что закрывающий тэг теперь состоит из знака вопроса и знака больше вместо т...
    Пример 0-3. Изменение: новые тэги начала и конца, второй вариант:
    Пример 0-3. Изменение: новые тэги начала и конца, второй вариант: ?php echo This is PHP 3.0 code!\n; ? Из-за проблем с редакторами, не поддерживающими инструкции обработки (например Microsoft Fron...
    Пример 0-4. Изменение: новые тэги начала и конца, третий вариант:
    Пример 0-4. Изменение: новые тэги начала и конца, третий вариант: script language=php echo This is PHP 3.0 code!\n; /script...
    Синтаксис операторов if..endif
    Синтаксис операторов if..endif Альтернативный способ описания блока if/elseif/else, с использованием, if(); elseif (); else; endif; не мог быть эффективно осуществлен без серьезного усложнения ком...
    Пример 0-5. Изменение: старый синтаксис if..endif:
    Пример 0-5. Изменение: старый синтаксис if..endif: if ($foo); echo yep\n; elseif ($bar); echo almost\n; else; echo nope\n; endif;...
    Пример 0-6. Изменение: новый синтаксис if..endif:
    Пример 0-6. Изменение: новый синтаксис if..endif: if ($foo): echo yep\n; elseif ($bar): echo almost\n; else: echo nope\n; endif; Точки с запятой были заменены двоеточиями во всех операторах, за ис...
    Синтаксис while
    Синтаксис while Точно так же как, с if..endif, был изменен синтаксис while..endwhile:...
    Пример 0-7. Изменения: старый, while..endwhile синтаксис:
    Пример 0-7. Изменения: старый, while..endwhile синтаксис: while ($more_to_come); ... endwhile;...
    Пример 0-8. Изменения: новый синтаксис while..endwhile:
    Пример 0-8. Изменения: новый синтаксис while..endwhile: while ($more_to_come): ... endwhile; Внимание! Используя устаревший синтаксис в PHP 3.0 вы получите бесконечный цикл....
    Типы выражений
    Типы выражений В PHP/FI 2.0 использовалась левая часть выражения для определения типа результата. PHP 3.0 учитывает обе части выражения для определения типа результата; это может привести к неожид...
    Изменены сообщения об ошибках
    Изменены сообщения об ошибках Сообщения об ошибках PHP 3.0, как правило, точнее чем в 2.0. Вместо указания фрагмента кода, вызвавший ошибку, вы получаете имя файла и номер строки....
    Сокращенная операция вычисления логических выражений
    Сокращенная операция вычисления логических выражений В PHP 3.0 используется метод сокращенного вычисления логических выражений. Это означает что в выражении (1 || test_me()), функция test_me() не...
    Пример 0-9. Изменения 2.0: возвращаемые значения, старый код:
    Пример 0-9. Изменения 2.0: возвращаемые значения, старый код: $fp = fopen($file, r); if ($fp == -1); echo(Could not open $file for readingbr\n); endif;...
    Пример 0-10. Изменения 2.0: возвращаемые значения, новый код:
    Пример 0-10. Изменения 2.0: возвращаемые значения, новый код: $fp = @fopen($file, r) or print(Could not open $file for readingbr\n);...
    Прочие изменения
    Прочие изменения Модуль Apache в PHP 3.0 не поддерживает Apache версий до 1.2. - необходима версия Apache 1.2, или более поздняя. echo() больше не поддерживает строку формата. Используйте printf()...
    Пример 0-11. Изменения 2.0: сложение для строковых переменных
    Пример 0-11. Изменения 2.0: сложение для строковых переменных echo 1 + 1; В PHP 2.0 значение этого выражения - 11, а в PHP 3.0 - 2. Используйте вместо него: echo 1.1; $a = 1; $b = 1; echo $a + $b;...
    Приложение 0. Программирование на PHP
    Приложение 0. Программирование на PHP Добавление функций в PHP3...
    Прототип функции
    Прототип функции Все функции выглядят следующим образом: void php3_foo(INTERNAL_FUNCTION_PARAMETERS) {} Это общий вид функции, даже если она не имеет аргументов....
    Аргументы
    Аргументы Аргументы всегда имеют тип pval. Этот тип представляет собой объединение (union), в котором содержится фактический тип аргумента. В том случае, если ваша функция принимает несколько аргу...
    Пример 0-1. Объявление переменных:
    Пример 0-1. Объявление переменных: pval *arg1, *arg2; if (ARG_COUNT(ht) != 2 || getParameters(ht,2,arg1,arg2)==FAILURE) { WRONG_PARAM_COUNT; } Обратите внимание: аргументы могут быть по значению и...
    Функции с переменным числом аргументов
    Функции с переменным числом аргументов Функция может принимать неопределенное количество аргументов. Например, в случае, если ваша функция принимает два или три аргумента, можно использовать следу...
    Пример 0-2. Функции, принимающие несколько аргументов
    Пример 0-2. Функции, принимающие несколько аргументов pval *arg1, *arg2, *arg3; int arg_count = ARG_COUNT(ht);if (arg_count 2 || arg_count 3 || getParameters(ht,arg_count,arg1,arg2,arg3)==FAILURE)...
    Использование аргументов функции
    Использование аргументов функции Тип каждого аргумента означен в поле type структуры pval. Этот тип может быть любым из приведенных ниже:...
    Таблица 0-1. Типы переменных PHP
    Таблица 0-1. Типы переменных PHP IS_STRING String IS_DOUBLE Double-precision floating point IS_LONG Long integer IS_ARRAY Array IS_EMPTY None IS_USER_FUNCTION ?? IS_INTERNAL_FUNCTION ?? (если не м...
    Управление памятью в функциях
    Управление памятью в функциях Память, необходимая внутри функции, должна быть зарезервирована функциями emalloc() или estrdup(). Это функции управления памятью, которые выглядят и работают как обы...
    Установка переменных в таблице символов
    Установка переменных в таблице символов Для упрощения доступа к переменным в таблице символов определены следующие макросы: SET_VAR_STRING(имя,значение) [1] SET_VAR_DOUBLE(имя,значение) SET_VAR_LO...
    Пример 0-3. Проверка наличия $foo в таблице символов
    Пример 0-3. Проверка наличия $foo в таблице символов if (hash_exists(active_symbol_table,foo,sizeof(foo))) { существует... } else { не существует }...
    Пример 0-4. Вычисление размера переменной в таблице символов
    Пример 0-4. Вычисление размера переменной в таблице символов hash_find(active_symbol_table,foo,sizeof(foo),pvalue); check(pvalue.type); В PHP 3.0 маcсивы реализованы с использованием тех же хэш-та...
    Пример 0-5. инициализация нового множества
    Пример 0-5. инициализация нового множества pval arr; if (array_init(arr) == FAILURE) { failed... }; hash_update(active_symbol_table,foo,sizeof(foo),arr,sizeof(pval),NULL); Объявление нового (пусто...
    Пример 0-6. Добавление элементов к массиву
    Пример 0-6. Добавление элементов к массиву pval entry; entry.type = IS_LONG; entry.value.lval = 5;/* определяет $foo[bar] = 5 */ hash_update(arr.value.ht,bar,sizeof(bar),entry,sizeof(pval),NULL);...
    Возврат значений простых типов
    Возврат значений простых типов Для упрощения возврата значений из функций определены следующие макросы: Макросы RETURN_* устанавливают значение возвращаемое значение функции и возвращают управлени...
    Возврат значений сложных типов
    Возврат значений сложных типов Ваша функция может также возвращать и сложные значения; такие как объект или массив. Возвращение объекта: Вызвать object_init(return_value). Присвоить полям значения...
    Использование списка ресурсов
    Использование списка ресурсов В PHP 3.0 имеется стандартные методы для работы с разными типами ресурсов. Это сделано для замены локально связанных списков в PHP 2.0. Доступные функции: php3_list_i...
    Пример работы с этими функциями показан ниже. Пример 0-7. Добавление нового ресурса
    Пример работы с этими функциями показан ниже. Пример 0-7. Добавление нового ресурса RESOURCE *resource;/* ...выделение памяти под ресурс и создание его... */ /* добавление ресурса в список */ retu...
    Пример 0-8. Использование существующего ресурса
    Пример 0-8. Использование существующего ресурса pval *resource_id; RESOURCE *resource; int type; convert_to_long(resource_id); resource = php3_list_find(resource_id-value.lval, type); if (type !=...
    Пример 0-9. Удаление ресурса
    Пример 0-9. Удаление ресурса pval *resource_id; RESOURCE *resource; int type;convert_to_long(resource_id); php3_list_delete(resource_id-value.lval); Типы ресурсов должны быть зарегистрированы в ph...
    Использование таблиц постоянных ресурсов
    Использование таблиц постоянных ресурсов В PHP 3.0 существует методы хранения постоянных ресурсов (ресурсов, которые сохраняются между вызовами). Один из модулей, который использует эту возможност...
    Директивы времени выполнения (runtime)
    Директивы времени выполнения (runtime) Многие возможности PHP3 могут быть сконфигурированы во время выполнения. Конфигурационные директивы могут быть либо в файле php3.ini, либо, в случае использо...
    Вызов пользовательских функций
    Вызов пользовательских функций Для вызова пользовательских функций из внутренней нужно использовать call_user_function() . Функция call_user_function() возвращает SUCCESS в случае успеха, и FAILUR...
    HashTable *function_table
    HashTable *function_table Хэш-таблица в которой производится поиск функции....
    pval *object
    pval *object Указатель на объект, с которым вызывается функция. NULL если вызывается глобальная функция. В первом случае аргумент function_table игнорируется и берется и определяется из объекта. О...
    pval *function_name
    pval *function_name Имя вызываемой функции. Должно быть pval IS_STRING со значениями function_name.str.val и function_name.str.len установленными соответственно. Значение function_name изменяется...
    pval *retval
    pval *retval Указатель на структуру pval, в которую записывается возвращаемое функцией значение. Структура должна быть создана заранее, call_user_function() сама по себе не создает ничего....
    int param_count
    int param_count Число параметров, передаваемое функции....
    pval *params[]
    pval *params[] Массив указателей на значения, которые передаются в вызываемую функцию; первый аргумент имеет смещение 0, второй 1 и т.д. Массив является массивом указателей на pval. Аргументы пере...
    Сообщения об ошибках
    Сообщения об ошибках Чтобы выдать сообщение об ошибке внутри функций вы должны использовать функкцию php3_error(). Она принимает как минимум два параметра -- первый это категория ошибки, второй -...
    E_NOTICE
    E_NOTICE Сообщения этого типа по умолчанию не выводятся и сигнализируют о том, что в скрипте произошло что-то, что может означать ошибку, но может случится и при нормальном исполнении скрипта....
    Примерами могут служить попытка обращения к переменной, значение которой не определено, или вызов stat()
    Примерами могут служить попытка обращения к переменной, значение которой не определено, или вызов stat() для несуществующего файла....
    E_WARNING
    E_WARNING Сообщения этого типа выводятся, но не прерывают выполнение скрипта. Они сообщают, что существует ошибка, которая должна быть отслежена скриптом до того, как будет сделан вызов....
    Примером служит вызов ereg()
    Примером служит вызов ereg() с неправильным регулярным выражением....
    E_ERROR
    E_ERROR Сообщения этого типа также выводятся по умолчанию, и выполнение скрипта прекращается. Они означают неустранимые ошибки, такие как невозможность выделения памяти....
    E_PARSE
    E_PARSE Ошибки данного класса генерируются исключительно синтаксическим анализатором. Этот класс ошибок приведен здесь исключительно для полноты изложения....
    E_CORE_ERROR
    E_CORE_ERROR То же, что и E_ERROR, за исключением того, что генерируются ядром PHP. В функциях не должны генерироваться сообщения данного типа....
    E_CORE_WARNING
    E_CORE_WARNING То же, что и E_WARNING, за исключением того, что генерируются ядром PHP. В функциях не должны генерироваться сообщения данного типа. Взгляд вглубь PHP...
    Приложение 0. Отладчик PHP
    Приложение 0. Отладчик PHP Использование отладчика Отладчик PHP полезен при отслеживании неочевидных ошибок. Он работает через TCP порт каждый раз, когда стартует PHP. Все сообщения об ошибках из...
    Протокол отладчика
    Протокол отладчика Протокол отладчика основан на отдельных строках. Каждая строка имеет свой тип; несколько строк могут составлять сообщение . Каждое сообщение начинается со строки с типом start и...
    Таблица 0-1. Типы строк отладчика
    Таблица 0-1. Типы строк отладчика ТипЗначенне start Сообщает получающей программе, что в этом месте начинается сообщение. Содержимое строки data содержит тип сообщения об ошибке (см. ниже). messag...
    Таблица 0-2. Типы ошибок отладчика
    Таблица 0-2. Типы ошибок отладчика ОтладчикВнутренняя в PHP warning E_WARNING error E_ERROR parse E_PARSE notice E_NOTICE core-error E_CORE_ERROR core-warning E_CORE_WARNING unknown (любая другая)...
    Пример 0-1. Пример сообщения об ошибке
    Пример 0-1. Пример сообщения об ошибке 1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice 1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable 1998-04-0...








Начало