Предопределённые константы w32api

CXXXI. W32api Functions

This extension is a generic extension API to DLLs. This was originally written to allow access to the Win32 API from PHP, although you can also access other functions exported via other DLLs.

Currently supported types are generic PHP types (strings, booleans, floats, integers and nulls) and types you define with w32api_deftype() .

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ . Поведение этого расширения, включая имена его функций и относящуюся к нему документацию, может измениться в последующих версиях PHP без уведомления. Используйте это расширение на свой страх и риск.

This extension will only work on Windows systems.

Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.

Данное расширение не определяет никакие директивы конфигурации в php.ini .

This extension defines one resource type, used for user defined types. The name of this resource is «dynaparm» .

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

This example gets the amount of time the system has been running and displays it in a message box.

Пример 1. Get the uptime and display it in a message box

// Define constants needed, taken from
// Visual Studio/Tools/Winapi/WIN32API.txt
define ( «MB_OK» , 0 );

// Load the extension in
dl ( «php_w32api.dll» );

// Register the GetTickCount function from kernel32.dll
w32api_register_function ( «kernel32.dll» ,
«GetTickCount» ,
«long» );

// Register the MessageBoxA function from User32.dll
w32api_register_function ( «User32.dll» ,
«MessageBoxA» ,
«long» );

// Get uptime information
$ticks = GetTickCount ();

// Convert it to a nicely displayable text
$secs = floor ( $ticks / 1000 );
$mins = floor ( $secs / 60 );
$hours = floor ( $mins / 60 );

$str = sprintf ( «You have been using your computer for:» .
«\r\n %d Milliseconds, or \r\n %d Seconds» .
«or \r\n %d mins or\r\n %d hours %d mins.» ,
$ticks ,
$secs ,
$mins ,
$hours ,
$mins — ( $hours * 60 ));

// Display a message box with only an OK button and the uptime text
MessageBoxA ( NULL ,
$str ,
«Uptime Information» ,
MB_OK );
?>

Answer to the note posted by me at nullflux dot com (see below)

The Win32 API *does* work in other versions of PHP than between 4.2.0 and 4.2.3. However the documented functions are not available. You will have to use the «win32» class to access functions. For an example, read Philip Soeberg’s post just below.

Here is a new link for the official page for the Windows API @ Microsoft’s site:

It seems that this extension will be replaced by FFI extension in PHP5. FFI stands for «Foreign Function Interface» and it’s not limited by Windows API, but also supports Linux APIs. You may reach this extension’s website at http://pecl.php.net/package/ffi . For Windows, you may try this code from commandline php.exe:

$windows = new ffi ( «[lib=’user32.dll’] int MessageBoxA( int handle, char *text, char *caption, int type );» );

echo $windows -> MessageBoxA ( 0 , «Message For You» , «Hello World» , 1 );
?>

The win32 support appears to be pretty flaky in php. This of course is to be expected with an experimental extension. That being said, if you are having trouble using the win32 functionality you may want to look into creating a PHP extension instead.

We were having some problems interfacing PHP with a 3rd party dll. As such we created an extension which wraps the interface with the aforementioned dll. The solution was surprisingly quick and painless.
Because we use Delphi primarily we found the following extremely useful and easy to use. http://users.chello.be/ws36637/php4delphi.html#download

In response to post by Jan Kleinsorge.

To get the proper windows system uptime, one should use the Performance Monitoring system. GetTickCount is limited to 49.7 days, as the result is a dword.

if (! dl ( «php_w32api.dll» )) <
echo «Unable to load php_w32api.dll» ;
exit;
>

$api = new win32 ;
$api -> registerfunction ( «bool QueryPerformanceCounter (float &lpPerformanceCount) From kernel32.dll» );
$api -> registerfunction ( «bool QueryPerformanceFrequency (float &lpPerformanceFrequency) From kernel32.dll» );

$api -> QueryPerformanceCounter ( $a );
$api -> QueryPerformanceFrequency ( $b );
$c = $a / $b ;
$days = floor ( $c / 86400 );
echo gmstrftime ( «System uptime is $days Days, %H Hr, %M Min, %S Sec
» , $c );
?>

The above snippet will return the true uptime for an unlimited time for a windows OS. (Disregarding the fact that windows needs reboot every 10 days or so :))
A tiny dange though is the lack of 64bit variable types in php.. (the «float &lpPerformanceCount» should be «long long &lpPerformanceCount») .. Nevertheless.. It works :)

http://msdn.microsoft.com/library/ contains functions for use with this extension.

Beware! The menu system is very dense, and confusing at first if you don’t know where your going.

Luckily for you I am going to add how to get there in this note. ;)

Windows Development > Development Guides > Windows API > Windows API Reference

The small, unofficial documentation is now available here http://wobster.mynnga.de/w32api.txt .
The old link from the post above is dead.

Note that the W32API doesn’t seem to be under development anymore. E-Mails to the author stayed unanswered.
If you really have to use it, just some hints here: There are often problems concerning Apache webservers. This extension doesn’t seem to work with mod_php.
I used the API on IIS5 with PHP as CGI. Additionally the IUSR_ (that’s the user IIS runs php.exe by default) might need additional rights to be able to call certain API-functions.

for phpgtk users, who might want to add some sound to their apps, here is the code, assuming ding.wav is in the script’s directory

$api = new win32;
$api->registerfunction(«long sndPlaySound (string a, int b) From winmm.dll»);
$api->sndPlaySound(«ding.wav», 0);

you can use the big win32.hlp file containing the win32 api reference to get some other multimedia functions

I played a bit around with the W32API. Here is some code that actually works with the current release of W32API.
The interface changed completely, so all documentation about this extension is out-dated. While the old release
just implemented «plain» functions, the current version offers a class to handle all the API-related operations.
Additionally, functions are now registered using a SQL-like language with a single string.

/*
DWORD GetTickCount(VOID)
Returns the ms the OS is running
*/
$api -> registerfunction ( «long GetTickCount () From Kernel32.dll» );

$len = 255 ; // set the length your variable should have
$name = str_repeat ( «\0» , $len ); // prepare an empty string
if ( $api -> GetUserName ( $name , $len ) == 0 )
<
die( «failed» );
>

if (!( $time = $api -> GetTickCount ()))
<
die( «failed» );
>

echo «Username: $name
\n Systemtime: $time
\n » ;

In order to use most (perhaps all?) of the win32 API while running with a web server you have to give the server service permission to interact with the desktop. This is especially noticeable with the given example, where the script will try to display message boxes on the server’s display.

Keep in mind, however, that you should think hard about the consequences of letting a web server interact with your desktop, especially if you’re not the only one using the web server.

Win32 API. Программирование: Учебное пособие

Для того, чтобы оценить ресурс, необходимо авторизоваться.

Рассмотрены основные принципы программирования в среде Microsoft Windows на языке C++ с применением Win32 API. Пособие предназначено для студентов, обучающихся по специальностям 210202.65 «Проектирование и технология вычислительных средств» и 0900104.65 «Комплексная защита объектов информации», а также для студентов других специальностей изучающих дисциплину «Программирование на языках высокого уровня».

Предопределенные константы

Объявленные в ядре константы

Нижеописанные константы объявляются ядром PHP и охватывают PHP, Zend engine и SAPI-модули.

PHP_VERSION ( string ) Текущая версия PHP в виде строки в формате «major.minor.release[extra]». PHP_MAJOR_VERSION ( integer ) Текущая «основная» (major) версия PHP в виде целого числа (например, int(5) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_MINOR_VERSION ( integer ) Текущая «промежуточная» версия PHP в виде целого числа (например, int(2) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_RELEASE_VERSION ( integer ) Текущая «релиз»-версия (release) PHP в виде целого числа (например, int(7) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_VERSION_ID ( integer ) Текущая версия PHP в виде целого числа, её удобно использовать при сравнениях версий (например, int(50207) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_EXTRA_VERSION ( string ) Текущая «экстра»-версия PHP в виде строки (например, ‘-extra’ для версии «5.2.7-extra»). Обычно используется в различных дистрибутивах для индикации версий пакетов. Доступна начиная с версии PHP 5.2.7. PHP_ZTS ( integer ) Доступна начиная с версии PHP 5.2.7. PHP_DEBUG ( integer ) Доступна начиная с версии PHP 5.2.7. PHP_MAXPATHLEN ( integer ) Максимальная длина файловых имен (включая путь), поддерживаемая данной сборкой PHP. Доступна начиная с версии PHP 5.3.0. PHP_OS ( string ) PHP_SAPI ( string ) Серверное API данной сборки PHP. Смотрите также php_sapi_name() . PHP_EOL ( string ) Корректный символ конца строки, используемый на данной платформе. Доступна начиная с версии PHP 5.0.2 PHP_INT_MAX ( integer ) Максимальное целое число, поддерживаемое данной сборкой PHP. Обычно это int(2147483647). Доступна начиная с версии PHP 5.0.5 PHP_INT_SIZE ( integer ) Доступна начиная с версии PHP 5.0.5 DEFAULT_INCLUDE_PATH ( string ) PEAR_INSTALL_DIR ( string ) PEAR_EXTENSION_DIR ( string ) PHP_EXTENSION_DIR ( string ) PHP_PREFIX ( string ) Значение опции «—prefix», указанной при запуске configure. PHP_BINDIR ( string ) Указывает путь установки бинарных файлов. PHP_BINARY ( string ) Указывает путь к исполняемым файлам PHP во время выполнения скрипта. Доступна с версии PHP 5.4. PHP_MANDIR ( string ) Указывает путь установки страниц документации man. Доступна, начиная с версии PHP 5.3.7. PHP_LIBDIR ( string ) PHP_DATADIR ( string ) PHP_SYSCONFDIR ( string ) PHP_LOCALSTATEDIR ( string ) PHP_CONFIG_FILE_PATH ( string ) PHP_CONFIG_FILE_SCAN_DIR ( string ) PHP_SHLIB_SUFFIX ( string ) Суффикс, используемый для динамически линкуемых библиотек, таких как «so» (характерный для большинства Unix-систем) или «dll» (Windows). E_ERROR ( integer ) Константа, указывающая уровень сообщений об ошибках E_WARNING ( integer ) E_PARSE ( integer ) E_NOTICE ( integer ) E_CORE_ERROR ( integer ) E_CORE_WARNING ( integer ) E_COMPILE_ERROR ( integer ) E_COMPILE_WARNING ( integer ) E_USER_ERROR ( integer ) E_USER_WARNING ( integer ) E_USER_NOTICE ( integer ) E_DEPRECATED ( integer ) Доступна начиная с версии PHP 5.3.0 E_USER_DEPRECATED ( integer ) Доступна начиная с версии PHP 5.3.0 E_ALL ( integer ) E_STRICT ( integer ) __COMPILER_HALT_OFFSET__ ( integer ) Доступна начиная с версии PHP 5.1.0 TRUE ( boolean ) Смотрите раздел Булев тип. FALSE ( boolean ) Смотрите раздел Булев тип. NULL ( null ) Смотрите Null.

Стандартные предопределенные константы

Все константы, входящие в состав ядра расширений, теперь определены в PHP по умолчанию.

Предопределённые константы w32api

Нижеописанные константы объявляются ядром PHP и охватывают PHP, Zend engine и SAPI-модули.

PHP_VERSION ( string ) Текущая версия PHP в виде строки в формате «major.minor.release[extra]». PHP_MAJOR_VERSION ( integer ) Текущая «основная» (major) версия PHP в виде целого числа (например, int(5) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_MINOR_VERSION ( integer ) Текущая «промежуточная» версия PHP в виде целого числа (например, int(2) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_RELEASE_VERSION ( integer ) Текущая «релиз»-версия (release) PHP в виде целого числа (например, int(7) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_VERSION_ID ( integer ) Текущая версия PHP в виде целого числа, её удобно использовать при сравнениях версий (например, int(50207) для версии «5.2.7-extra»). Доступна начиная с версии PHP 5.2.7. PHP_EXTRA_VERSION ( string ) Текущая «экстра»-версия PHP в виде строки (например, ‘-extra’ для версии «5.2.7-extra»). Обычно используется в различных дистрибутивах для индикации версий пакетов. Доступна начиная с версии PHP 5.2.7. PHP_ZTS ( integer ) Доступна начиная с версии PHP 5.2.7. PHP_DEBUG ( integer ) Доступна начиная с версии PHP 5.2.7. PHP_MAXPATHLEN ( integer ) Максимальная длина файловых имен (включая путь), поддерживаемая данной сборкой PHP. Доступна начиная с версии PHP 5.3.0. PHP_OS ( string ) Операционная система, под которую собирался PHP PHP_OS_FAMILY ( string ) Семейство операционных систем, для которых собран PHP. Одна из ‘Windows’, ‘BSD’, ‘OSX’, ‘Solaris’, ‘Linux’ или ‘unknown’. Доступно с PHP 7.2.0. PHP_SAPI ( string ) Серверное API данной сборки PHP. Смотрите также php_sapi_name() . PHP_EOL ( string ) Корректный символ конца строки, используемый на данной платформе. Доступна начиная с версии PHP 5.0.2 PHP_INT_MAX ( integer ) Максимальное целое число, поддерживаемое данной сборкой PHP. Обычно это int(2147483647). Доступна начиная с версии PHP 5.0.5 Обычно, PHP_INT_MIN ===

PHP_INT_MAX. PHP_INT_MIN ( integer ) Минимальное целое число, поддерживаемое данной сборкой PHP. Обычно это int(-2147483648) в 32-битных системах и int(-9223372036854775808) в 64-битных. Доступна начиная в версии PHP 7.0.0 PHP_INT_SIZE ( integer ) Размер целого числа в байтах в текущей сборке PHP. Доступна с PHP 5.0.5 PHP_FLOAT_DIG ( integer ) Количество десятичных цифр, которые могут быть округлены в float и обратно без потери точности. Доступно с PHP 7.2.0. PHP_FLOAT_EPSILON ( float ) Наименьшее положительное число x, такое, что x + 1.0 != 1.0. Доступно с PHP 7.2.0. PHP_FLOAT_MIN ( float ) Наименьшее возможное число типа float . Доступно с PHP 7.2.0. PHP_FLOAT_MAX ( float ) Максимальное возможное число типа float . Доступно с PHP 7.2.0. DEFAULT_INCLUDE_PATH ( string ) PEAR_INSTALL_DIR ( string ) PEAR_EXTENSION_DIR ( string ) PHP_EXTENSION_DIR ( string ) PHP_PREFIX ( string ) Значение опции «—prefix», указанной при запуске configure. PHP_BINDIR ( string ) Указывает путь установки бинарных файлов. PHP_BINARY ( string ) Указывает путь к исполняемым файлам PHP во время выполнения скрипта. Доступна с версии PHP 5.4. PHP_MANDIR ( string ) Указывает путь установки страниц документации man. Доступна, начиная с версии PHP 5.3.7. PHP_LIBDIR ( string ) PHP_DATADIR ( string ) PHP_SYSCONFDIR ( string ) PHP_LOCALSTATEDIR ( string ) PHP_CONFIG_FILE_PATH ( string ) PHP_CONFIG_FILE_SCAN_DIR ( string ) PHP_SHLIB_SUFFIX ( string ) Суффикс, используемый для динамически линкуемых библиотек, таких как «so» (характерный для большинства Unix-систем) или «dll» (Windows). PHP_FD_SETSIZE ( string ) Максимальное количество файловых дескрипторов для системных вызовов. Доступно с PHP 7.1.0. E_ERROR ( integer ) Константа, указывающая уровень сообщений об ошибках E_WARNING ( integer ) E_PARSE ( integer ) E_NOTICE ( integer ) E_CORE_ERROR ( integer ) E_CORE_WARNING ( integer ) E_COMPILE_ERROR ( integer ) E_COMPILE_WARNING ( integer ) E_USER_ERROR ( integer ) E_USER_WARNING ( integer ) E_USER_NOTICE ( integer ) E_DEPRECATED ( integer ) Доступна начиная с версии PHP 5.3.0 E_USER_DEPRECATED ( integer ) Доступна начиная с версии PHP 5.3.0 E_ALL ( integer ) E_STRICT ( integer ) __COMPILER_HALT_OFFSET__ ( integer ) Доступна начиная с версии PHP 5.1.0 TRUE ( boolean ) Смотрите раздел Булев тип. FALSE ( boolean ) Смотрите раздел Булев тип. NULL ( null ) Смотрите Null.

Стандартные предопределенные константы

Все константы, входящие в состав ядра расширений, теперь определены в PHP по-умолчанию.

User Contributed Notes 3 notes

Volker’s getOS() function needs to have the order of cases changed in the switch statement since «darwin» contains «win», which means that both «windows» and «darwin» will return self::OS_WIN. I’ve moved the ‘dar’ case above the ‘win’ case:

const OS_UNKNOWN = 1 ;
const OS_WIN = 2 ;
const OS_LINUX = 3 ;
const OS_OSX = 4 ;

/**
* @return int
*/
static public function getOS () <
switch ( true ) <
case stristr ( PHP_OS , ‘DAR’ ): return self :: OS_OSX ;
case stristr ( PHP_OS , ‘WIN’ ): return self :: OS_WIN ;
case stristr ( PHP_OS , ‘LINUX’ ): return self :: OS_LINUX ;
default : return self :: OS_UNKNOWN ;
>
>

PHP_EOL can be used like that:

= ‘some data’ . PHP_EOL ;
$fp = fopen ( ‘somefile’ , ‘a’ );
fwrite ( $fp , $data );

?>

Which is the same of \r\n or \n depending on the OS.
You can put those lines in a while for example, and create a log file.

Don’t use `PHP_EOL` for textarea of form to array, use it:

array_values(array_filter(explode(«\n», str_replace(«\r», », $_POST[‘data’]))))

Магические методы и предопределенные константы в PHP

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

В данном уроке мы рассмотрим несколько полезных предопределенных констант и магических методов с примерами использования в коде.

Предопределенные константы

Предопределённые константы используются для получения информации о вашем коде. Имя такой константы пишется заглавными буквами между сдвоенными подчеркиваниями, например, __LINE__ и __FILE__ . Вот несколько полезных предопределённых констант, доступных в PHP:

    __LINE__ возвращает номер строки в исходном файле, где используется константа:

Магические методы

Магические методы представляют крючки для специального функционала PHP. Их имена пишутся маленькими буквами с двумя предшествующими подчеркиваниями, например, __construct() и __destruct() .

__construct() — магический метод, который PHP вызывает для создания экземпляра вашего класса. Он принимает любое количество аргументов.

__destruct()- магический метод, который вызывается, когда объект уничтожается коллектором PHP. Данный метод не принимает аргументов и обычно используется для выполнения специальных операций, например, для закрытия соединения с базой данных.

Следующие несколько магических методов предназначены для манипуляций со свойствами, и представляют способ для PHP обработать обращения ко свойствам и методам, которые не были определены (или недоступны).

PHP вызывает метод __get() в получающем контексте, если свойство не определено (или недоступно). Метод принимает один аргумент — имя свойства. Он должен вернуть значение, которое будет обрабатываться как значение свойства.

Метод __set() вызывается для неопределенного свойства в задающем контексте. Данный метод принимает два аргумента, имя свойства и значение.

В выше приведенном коде свойство name не определено в классе. В коде предпринимается попытка назначить данному свойству значение “Alireza” и PHP вызывает магический метод __set() . Он получает “name” в качестве аргумента $prop и “Alireza” как $value , и сохраняет значение в частном массиве $myArray . Метод __get() работает в схожей манере. При выводе $obj->name вызывается метод __get() и ему передается значение “name” как аргумент $prop .

Есть и другие магические методы, которые помогают манипулировать недоступными свойствами, как в приведенном примере: __isset() , __unset() и __toString() . Оба метода __isset() и __unset() запускаются функциями с такими же именами, но без подчеркиваний в PHP.

__isset() проверяет, установлено свойство или нет. Данный метод принимает один аргумент — свойство, которое надо проверить. Метод __unset() принимает один аргумент, имя свойства, которое нужно сбросить.

Во многих случаях удобно представление объекта как строки, например, для вывода пользователю или другому процессу. Обычно PHP представляет объект как идентификатор в памяти, что плохо для таких функций. Метод __toString() помогает представить объект как строку. Метод запускается во многих ситуациях, где объект используется как строка, например, echo «Hello $obj» . Также его можно вызвать непосредственно, как любой другой публичный метод.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: phpmaster.com/magic-methods-and-predefined-constants-in-php/
Перевел: Сергей Фастунов
Урок создан: 26 Апреля 2012
Просмотров: 25631
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Константы в win API

Внимание
25.06.2013, 12:38

Рисование эллипса с использованием переменных Win Api
Мне казалось, что я ничего особенно необычного не делаю, но опыт показал, что по каким-то причинам.

Формат указателей в структуре передаваемой в win api функцию SHBrowseForFolderW
Всем привет, С низкоуровневым программированием сталкивался мало в основном писал на Java, но.

WIN API
Доброе время суток. Учусь в институте и дали сделать такую хрень: Реализовать приложения Win32API.

API Win 32
Вообщем-то нужно определить конфигурацию компьютера посредствам функций api win 32. Какие диски.

WIN API C++
Недавно заинтересовался win api, с++ знаю только по консоли и с++ билдере. У меня 2 вопроса) 1.

CLVII. W32api Functions

This extension is a generic extension API to DLLs. This was originally written to allow access to the Win32 API from PHP, although you can also access other functions exported via other DLLs.

Currently supported types are generic PHP types (strings, booleans, floats, integers and nulls) and types you define with w32api_deftype() .

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ . Поведение этого расширения, включая имена его функций и относящуюся к нему документацию, может измениться в последующих версиях PHP без уведомления. Используйте это расширение на свой страх и риск.

This extension will only work on Windows systems.

Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.

Данное расширение не определяет никакие директивы конфигурации в php.ini .

This extension defines one resource type, used for user defined types. The name of this resource is «dynaparm» .

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

This example gets the amount of time the system has been running and displays it in a message box.

Пример 1. Get the uptime and display it in a message box

Внимание
// Define constants needed, taken from
// Visual Studio/Tools/Winapi/WIN32API.txt
define ( «MB_OK» , 0 );

// Load the extension in
dl ( «php_w32api.dll» );

// Register the GetTickCount function from kernel32.dll
w32api_register_function ( «kernel32.dll» ,
«GetTickCount» ,
«long» );

// Register the MessageBoxA function from User32.dll
w32api_register_function ( «User32.dll» ,
«MessageBoxA» ,
«long» );

// Get uptime information
$ticks = GetTickCount ();

// Convert it to a nicely displayable text
$secs = floor ( $ticks / 1000 );
$mins = floor ( $secs / 60 );
$hours = floor ( $mins / 60 );

$str = sprintf ( «You have been using your computer for:» .
«\r\n %d Milliseconds, or \r\n %d Seconds» .
«or \r\n %d mins or\r\n %d hours %d mins.» ,
$ticks ,
$secs ,
$mins ,
$hours ,
$mins — ( $hours * 60 ));

Предопределенные константы

Перечисленные ниже константы всегда доступны как часть ядра PHP.

Предопределенные константы phpcredits()

Константа Значение Описание
CREDITS_GROUP 1 Список разработчиков ядра PHP
CREDITS_GENERAL 2 Главные разработчики: Дизайн и концепции языка, авторы PHP и SAPI модуля.
CREDITS_SAPI 4 Список серверных API для PHP и их авторы.
CREDITS_MODULES 8 Список расширений для PHP и их авторы.
CREDITS_DOCS 16 Члены команды разработчиков документации.
CREDITS_FULLPAGE 32 Обычно используется в сочетании с другими флагами. Означает, что HTML страница должна печататься вместе с дополнительной информацией (за которую отвечают другие флаги).
CREDITS_QA 64 Члены команды контроля качества.
CREDITS_ALL -1 Все разработчики, аналогично использованию: CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_QA CREDITS_FULLPAGE. Будет сгенерирована HTML страница с соответствующими тэгами. Это значение по умолчанию.
Константы phpinfo()
Константа Значение Описание
INFO_GENERAL 1 Строка конфигурации, размещение php.ini , дата сборки, Web-сервер, система и др.
INFO_CREDITS 2 PHP разработчики. См. также phpcredits() .
INFO_CONFIGURATION 4 Текущие локальные и основные значения PHP директив. См. также ini_get() .
INFO_MODULES 8 Загруженные модули и их настройки.
INFO_ENVIRONMENT 16 Информация о переменных среды, которая также доступна в $_ENV .
INFO_VARIABLES 32 Показывает все предопределенные переменные из EGPCS (Environment, GET, POST, Cookie, Server).
INFO_LICENSE 64 Информация о лицензии PHP. См. также » Чаво по лицензиям.
INFO_ALL -1 Константа по умолчанию. Показывает всю информацию описанную выше.
INI константы
Константа Значение Описание
INI_USER 1 Не используется
INI_PERDIR 2 Не используется
INI_SYSTEM 4 Не используется
INI_ALL 7 Не используется

Константы проверки утверждений. Эти значения используются для задания настроек assert_options() .

assert() константы

Константа INI настройка Описание
ASSERT_ACTIVE assert.active Включение assert() проверок.
ASSERT_CALLBACK assert.callback Обратный вызов при провале проверки утверждения.
ASSERT_BAIL assert.bail Прервать выполнение при провале проверки утверждения.
ASSERT_WARNING assert.warning Выдавать предупреждение PHP в случае провала проверки каждого утверждения
ASSERT_QUIET_EVAL assert.quiet_eval Отключить error_reporting в время выполнения проверки утверждения.

Следующие константы доступны только под Windows. Они позволяют извлечь различную информацию о версиях программного обеспечения. Все константы доступны с PHP 5.3.0.

Специфичные для Windows константы

Константа Описание
PHP_WINDOWS_VERSION_MAJOR Основной номер версии Windows, это может быть 4 (NT4/Me/98/95), 5 (XP/2003 R2/2003/2000) или 6 (Vista/2008/7/8/8.1).
PHP_WINDOWS_VERSION_MINOR Уточняющий номер версии Windows, это может быть (Vista/2008/2000/NT4/95), 1 (XP), 2 (2003 R2/2003/XP x64), 10 (98) или 90 (ME).
PHP_WINDOWS_VERSION_BUILD Номер сборки Windows (например, Windows Vista SP1 имеет номер сборки 6001)
PHP_WINDOWS_VERSION_PLATFORM Платформа, на которой PHP работает на данный момент. Возможны значения 2 для Windows Vista/XP/2000/NT4, Server 2008/2003, а для Windows ME/98/95 это значение будет 1.
PHP_WINDOWS_VERSION_SP_MAJOR Основной номер версии установленного сервис-пакета. Возможно значение , если пакетов не установлено. Например, в Windows XP с 3м сервис паком это значение будет 3.
PHP_WINDOWS_VERSION_SP_MINOR Дополнительный номер установленного пакета обновлений. Значение говорит от том, что пакетов не установлено.
PHP_WINDOWS_VERSION_SUITEMASK Битовая маска указывающая, какой дополнительный функционал установлен в системе Windows. Ниже приведена таблица с возможными значениями битового поля.
PHP_WINDOWS_VERSION_PRODUCTTYPE Содержит значение, определяющее константы вида PHP_WINDOWS_NT_*. Этим значением может быть одна из констант PHP_WINDOWS_NT_* указывающая на тип платформы.
PHP_WINDOWS_NT_DOMAIN_CONTROLLER Контроллер домена
PHP_WINDOWS_NT_SERVER Серверная система (напр. Server 2008/2003/2000). Надо учесть, что если сервер является контроллером домена, вместо этой константы будет выдаваться PHP_WINDOWS_NT_DOMAIN_CONTROLLER .
PHP_WINDOWS_NT_WORKSTATION Система рабочей станции (напр. Vista/XP/2000/NT4)

Таблица значений битовой маски PHP_WINDOWS_VERSION_SUITEMASK .

Константы в PHP

Константы по принципу работы похожи на переменные, но имеют одно важное отличие — записать какое-либо значение в константу можно только 1 раз, перезаписать это значение уже не получится.

Создать константу можно с помощью функции define() :

Первым значением мы передаём название константы (в нашем случае LOGIN ), вторым — значение 12345 .

Как вы заметили, у константы нет значка $ в начале. Чтобы не путаться, PHP разработчики взяли за правило всегда писать константы большими буквами, а слова разделять нижним подчёркиванием _ :

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

Строковые константы в PHP

Бывают ситуации, когда нам нужно получить значение константы, но само имя константы лежит в переменной. В этом случае мы можем получить значение константы с помощью функции constant() :

Встроенные или магические константы

В PHP существует несколько встроенных констант. Магическими они называются потому что их значение меняется в зависимости от контекста:

  • __LINE__ — текущая строка в скрипте
  • __FILE__ — полный путь и имя текущего скрипта
  • __DIR__ — полный путь к директории, в которой расположен скрипт

Есть и другие константы, но их назначение вы поймёте немного позже:

  • __FUNCTION__ — имя текущей функции
  • __CLASS__ — имя текущего класса с пространством имён
  • __TRAIT__ — имя текущего трейта с пространством имён
  • __METHOD__ — имя текущего метода
  • __NAMESPACE__ — имя текущего пространства имён
  • ClassName::class — имя классу, к которому мы обращаемся, с пространством имён

Напишите скрипт, который:
1. Создаёт константу PASSWORD со значением ioef84Fe# .
2. Выводит значение константы внутри тега div.

Предопределенные макроподстановки

Для облегчения отладки и получения информации о работе mql5-программы введены специальные константы-макросы, значения которых устанавливается в момент компиляции. Самый простой путь использования этих констант – вывод значений с помощью функции Print(), как показано в примере.

Дата компиляции файла без времени (часы, минуты и секунды равны 0)

Дата и время компиляции файла

Номер строки в исходном коде, на которой расположен данный макрос

Имя текущего компилируемого файла

Абсолютный путь к текущему компилируемому файлу

Имя функции, в теле которой расположен макрос

Сигнатура функции, в теле которой расположен макрос. Вывод в лог полного описания функции с типами параметров может пригодиться при идентификации перегруженных функций

Илон Маск рекомендует:  Проверка корректности введенного в текстовом поле IP адреса
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL