serafim / castxml
此包已被弃用,不再维护。作者建议使用 php-ffi/ide-helper-generator 包。
PHP 的 CastXml 包装器
dev-master / 1.0.x-dev
2023-08-10 23:55 UTC
Requires
- php: >=7.4
- symfony/polyfill-php80: ^1.22
- symfony/process: >=4.4
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/dom-crawler: >=4.4
- symfony/var-dumper: >=4.4
- vimeo/psalm: ^4.7
Suggests
- symfony/dom-crawler: (>=4.4) XML parsing support
This package is auto-updated.
Last update: 2023-08-10 23:56:32 UTC
README
!!! 此包已弃用,请使用 https://github.com/php-ffi/ide-helper-generator 代替
CastXML PHP 包装器
CastXML 是一种用于输出 C 家族抽象语法树 XML 工具。
此项目由 Kitware 维护,以支持 ITK,即 Insight Segmentation and Registration Toolkit。
安装
库可以使用 Composer 依赖管理器安装到任何 PHP 应用程序中。
composer require serafim/castxml
为了访问库,请确保将 vendor/autoload.php
包含在您的文件中。
<?php require __DIR__ . '/vendor/autoload.php';
二进制文件
别忘了安装二进制依赖项。如果您正在寻找预构建的二进制文件或构建此项目的紧凑方式,请参阅 CastXMLSuperbuild。
此外,某些操作系统支持使用依赖管理器安装,例如
$ sudo apt update $ apt install castxml
用法
要创建新的 CastXML,您可以使用可能的选项之一。
$castxml = new \Serafim\CastXml\CastXml(); // OR $binary = '/path/to/binary/castxml'; $castxml = new \Serafim\CastXml\CastXml($binary);
Windows OS 也受支持,只需在 PATH 变量中写入 CastXML 的路径或将
castxml.exe
的路径添加到类构造函数中。
可用性检查
有关一切是否正常的信息,请简单地使用可访问性 isAvailable()
方法。
$castxml = new \Serafim\CastXml\CastXml(); $available = $castxml->isAvailable(); // - bool(true) - CastXML is available // - bool(false) - CastXML is not available
版本
要获取版本信息,请使用方法 getVersion()
和 getClangVersion()
。
$castxml = new \Serafim\CastXml\CastXml(); echo $castxml->getVersion(); // For example: "0.4.2" echo $castxml->getClangVersion(); // For example: "11.0.0"
解析
要解析原始头文件,只需使用 parse()
方法。该方法需要一个必需的 $pathname
参数和一个可选的 $cwd
字符串参数。
$castxml = new \Serafim\CastXml\CastXml(); $result = $castxml->parse('/path/to/header.h'); // OR $result = $castxml->parse('/path/to/header.h', '/path/to/working_directory');
结果,您将获得一个 Serafim\CastXml\Result
对象。
$castxml = new \Serafim\CastXml\CastXml(); $result = $castxml->parse('/path/to/header.h'); echo $result->getContents(); // XML output // OR echo $result; // Same XML output
结果保存
$castxml = new \Serafim\CastXml\CastXml(); $result = $castxml->parse('/path/to/header.h'); // Save to file $result->saveAs('/path/to/filename.xml'); // Save into directory $result->saveIn('/path/to/directory');
结果解析
$castxml = new \Serafim\CastXml\CastXml(); $result = $castxml->parse('/path/to/header.h'); // Using SimpleXML // - ext-simplexml required $simplexml = $result->toXml(); // Using XML Reader // - ext-xmlreader required $reader = $result->toXmlReader(); // Using DOMDocument // - ext-dom required $ast = $result->toDomDocument();
结果 PHP 类型
$castxml = new \Serafim\CastXml\CastXml(); $result = $castxml->parse('/path/to/header.h'); foreach ($result as $type) { var_dump($type); }