mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
Integrate README.EXT_SKEL to help option
- Sync help output using heredoc - Add extension building instructions - Building with phpize is preferred option. Mention also tests - Refactor print_success()
This commit is contained in:
parent
50a6a0d819
commit
a1b7bc0c81
@ -1,43 +0,0 @@
|
||||
WHAT IT IS
|
||||
|
||||
It's a tool for automatically creating the basic framework for a PHP extension.
|
||||
|
||||
HOW TO USE IT
|
||||
|
||||
Very simple. First, change to the ext/ directory of the PHP sources. Then
|
||||
run the following
|
||||
|
||||
php ext_skel.php --ext extension_name
|
||||
|
||||
and everything you need will be placed in directory ext/extension_name.
|
||||
|
||||
If you don't need to test the existence of any external header files,
|
||||
libraries or functions in them, the extension is ready to be compiled in
|
||||
PHP. To compile the extension, run the following:
|
||||
|
||||
./buildconf; ./configure --enable-extension_name; make
|
||||
|
||||
The definition of PHP_extension_NAME_VERSION will be present in the
|
||||
php_extension_name.h and injected into the zend_extension_entry definition. This
|
||||
is required by the PECL website for the version string conformity checks
|
||||
against package.xml
|
||||
|
||||
SOURCE AND HEADER FILE NAME
|
||||
|
||||
The ext_skel.php script generates 'extension_name.c' and 'php_extension_name.h'
|
||||
as the main source and header files. Keep these names.
|
||||
|
||||
extension functions (User functions) must be named
|
||||
|
||||
extension_name_function()
|
||||
|
||||
When you need to expose extension functions to other extensions, expose functions
|
||||
strictly needed by others. Exposed internal function must be named
|
||||
|
||||
php_extension_name_function()
|
||||
|
||||
See also CODING_STANDARDS.
|
||||
|
||||
OTHER OPTIONS
|
||||
|
||||
Run php ext_skel.php --help to see the available options.
|
@ -104,8 +104,8 @@ CREATING SOURCE FILES
|
||||
|
||||
ext_skel can be of great help when creating the common code for all modules
|
||||
in PHP for you and also writing basic function definitions and C code for
|
||||
handling arguments passed to your functions. See README.EXT_SKEL for further
|
||||
information.
|
||||
handling arguments passed to your functions. See `./ext/ext_skel.php --help`
|
||||
for further information.
|
||||
|
||||
As for the rest, you are currently alone here. There are a lot of existing
|
||||
modules, use a simple module as a starting point and add your own code.
|
||||
|
110
ext/ext_skel.php
110
ext/ext_skel.php
@ -31,23 +31,91 @@ function error($message) {
|
||||
/* {{{ print_help
|
||||
*/
|
||||
function print_help() {
|
||||
printf('php ext_skel.php --ext <name> [--experimental] [--author <name>]%s', PHP_EOL);
|
||||
printf(' [--dir <path>] [--std] [--onlyunix]%s', PHP_EOL);
|
||||
printf(' [--onlywindows] [--help]%1$s%1$s', PHP_EOL);
|
||||
printf(' --ext <name> The name of the extension defined as <name>%s', PHP_EOL);
|
||||
printf(' --experimental Passed if this extension is experimental, this creates%s', PHP_EOL);
|
||||
printf(' the EXPERIMENTAL file in the root of the extension%s', PHP_EOL);
|
||||
printf(' --author <name> Your name, this is used if --std is passed and%s', PHP_EOL);
|
||||
printf(' for the CREDITS file%s', PHP_EOL);
|
||||
printf(' --dir <path> Path to the directory for where extension should be%s', PHP_EOL);
|
||||
printf(' created. Defaults to the directory of where this script%s', PHP_EOL);
|
||||
printf(' lives%s', PHP_EOL);
|
||||
printf(' --std If passed, the standard header used%s', PHP_EOL);
|
||||
printf(' in extensions that is included in the core, will be used%s', PHP_EOL);
|
||||
printf(' --onlyunix Only generate configure scripts for Unix%s', PHP_EOL);
|
||||
printf(' --onlywindows Only generate configure scripts for Windows%s', PHP_EOL);
|
||||
printf(' --help This help%s', PHP_EOL);
|
||||
if (PHP_OS_FAMILY != 'Windows') {
|
||||
$file_prefix = './';
|
||||
$make_prefix = '';
|
||||
} else {
|
||||
$file_prefix = '';
|
||||
$make_prefix = 'n';
|
||||
}
|
||||
|
||||
echo <<<HELP
|
||||
WHAT IT IS
|
||||
|
||||
It's a tool for automatically creating the basic framework for a PHP extension.
|
||||
|
||||
HOW TO USE IT
|
||||
|
||||
Very simple. First, change to the ext/ directory of the PHP sources. Then run
|
||||
the following
|
||||
|
||||
php ext_skel.php --ext extension_name
|
||||
|
||||
and everything you need will be placed in directory ext/extension_name.
|
||||
|
||||
If you don't need to test the existence of any external header files,
|
||||
libraries or functions in them, the extension is ready to be compiled in PHP.
|
||||
To compile the extension run the following:
|
||||
|
||||
cd extension_name
|
||||
phpize
|
||||
{$file_prefix}configure
|
||||
{$make_prefix}make
|
||||
|
||||
Don't forget to run tests once the compilation is done:
|
||||
|
||||
{$make_prefix}make test
|
||||
|
||||
Alternatively, to compile extension in the PHP:
|
||||
|
||||
cd /path/to/php-src
|
||||
{$file_prefix}buildconf
|
||||
{$file_prefix}configure --enable-extension_name
|
||||
{$make_prefix}make
|
||||
{$make_prefix}make test TESTS=ext/extension_name/tests
|
||||
|
||||
The definition of PHP_extension_NAME_VERSION will be present in the
|
||||
php_extension_name.h and injected into the zend_extension_entry definition.
|
||||
This is required by the PECL website for the version string conformity checks
|
||||
against package.xml
|
||||
|
||||
SOURCE AND HEADER FILE NAME
|
||||
|
||||
The ext_skel.php script generates 'extension_name.c' and 'php_extension_name.h'
|
||||
as the main source and header files. Keep these names.
|
||||
|
||||
extension functions (User functions) must be named
|
||||
|
||||
extension_name_function()
|
||||
|
||||
When you need to expose extension functions to other extensions, expose
|
||||
functions strictly needed by others. Exposed internal function must be named
|
||||
|
||||
php_extension_name_function()
|
||||
|
||||
See also CODING_STANDARDS.
|
||||
|
||||
OPTIONS
|
||||
|
||||
php ext_skel.php --ext <name> [--experimental] [--author <name>]
|
||||
[--dir <path>] [--std] [--onlyunix]
|
||||
[--onlywindows] [--help]
|
||||
|
||||
--ext <name> The name of the extension defined as <name>
|
||||
--experimental Passed if this extension is experimental, this creates
|
||||
the EXPERIMENTAL file in the root of the extension
|
||||
--author <name> Your name, this is used if --std is passed and for the
|
||||
CREDITS file
|
||||
--dir <path> Path to the directory for where extension should be
|
||||
created. Defaults to the directory of where this script
|
||||
lives
|
||||
--std If passed, the standard header used in extensions that
|
||||
is included in the core, will be used
|
||||
--onlyunix Only generate configure scripts for Unix
|
||||
--onlywindows Only generate configure scripts for Windows
|
||||
--help This help
|
||||
|
||||
HELP;
|
||||
exit;
|
||||
}
|
||||
/* }}} */
|
||||
@ -76,14 +144,14 @@ function print_success() {
|
||||
$make_prefix = 'n';
|
||||
}
|
||||
|
||||
printf('%1$sSuccess. The extension is now ready to be compiled into PHP. To do so, use the%s', PHP_EOL);
|
||||
printf('%1$sSuccess. The extension is now ready to be compiled. To do so, use the%s', PHP_EOL);
|
||||
printf('following steps:%1$s%1$s', PHP_EOL);
|
||||
printf('cd /path/to/php-src%s', PHP_EOL);
|
||||
printf('%sbuildconf%s', $file_prefix, PHP_EOL);
|
||||
printf('%sconfigure --enable-%s%s', $file_prefix, $options['ext'], PHP_EOL);
|
||||
printf('cd /path/to/php-src/%s%s', $options['ext'], PHP_EOL);
|
||||
printf('phpize%s', PHP_EOL);
|
||||
printf('%sconfigure%s', $file_prefix, PHP_EOL);
|
||||
printf('%smake%2$s%2$s', $make_prefix, PHP_EOL);
|
||||
printf('Don\'t forget to run tests once the compilation is done:%s', PHP_EOL);
|
||||
printf('%smake test TESTS=ext/%s/tests%3$s%3$s', $make_prefix, $options['ext'], PHP_EOL);
|
||||
printf('%smake test%2$s%2$s', $make_prefix, PHP_EOL);
|
||||
printf('Thank you for using PHP!%s', PHP_EOL);
|
||||
}
|
||||
/* }}} */
|
||||
|
Loading…
Reference in New Issue
Block a user