byjg / xmlnuke
基于XML/JSON的PHP框架
Requires
- php: >=5.4.0
- ext-dom: *
- ext-json: *
- ext-session: *
- ext-xml: *
- ext-xsl: *
- apache/log4php: 2.3.0
- byjg/imageutil: ~1.0
- byjg/singleton-pattern: ~1.0
- byjg/sparqllib: dev-master
- byjg/webrequest: ~1.0
- filp/whoops: 1.1.2
- mobiledetect/mobiledetectlib: 2.8.5
- neitanod/forceutf8: dev-master
- nikic/fast-route: dev-master
- phpmailer/phpmailer: 5.2.9
- willdurand/negotiation: 1.3.4
Suggests
- ext-curl: *
- ext-pdo_mysql: *
This package is auto-updated.
Last update: 2024-09-15 17:49:16 UTC
README
自2002年以来,我开始开发XMLNuke项目。我创建了一个框架,因为我希望将我学到的PHP最佳实践应用到项目中,并希望提高我的生产力。事实上,我使用XMLNuke进行开发比使用其他框架更有效率。多年来,PHP从没有代码标准的3.3版本发展到了PSR-*、命名空间、面向对象和强大的composer。XMLNuke经历了所有变化并也发展了。使用XMLNuke框架开发的应用也不断发展,时间并没有摧毁框架项目或使用它的应用程序。
但XMLNuke面临的挑战比PHP和时间更大。XMLNuke由一个大型软件块组成。如果你想使用一个小功能,你必须安装和设置所有XMLNuke软件。
现在是时候迈出下一步了。我从XMLNuke中学到了很多东西,并产生了一些有用的例程和代码。现在,XMLNuke项目被拆分为几个小型且可管理的项目。这个过程正在进行中。有几十个小项目,这个数量还在不断增加。XMLNuke正在变得小巧,并使用这些项目。
这个过程中最重要的部分是小型项目有更好的代码质量(Sensiolab Insights、Scrutinizer CI和Code Climate)和单元测试(Travis-CI)。
基于XMLNuke的遗留软件将继续运行,但XMLNuke将不再维护。你可以在网站OpenSource ByJG上找到新项目列表
**国王万岁。 **
描述
[ 主分支需要PHP53或更高版本,并完全符合PSR-0规范,通过使用命名空间。'php50'分支是XMLNuke的遗留版本,现在已弃用。 ]
XMLNuke是一个以数据为中心的Web开发框架。在XMLNuke中编程,你再也不必担心打开和关闭PHP标签以及管理意大利面条代码。你所有的代码都是基于对象的,所有代码仅生成XML或JSON数据,你可以选择。
这是一个XMLNuke页面
namespace MyProject\Modules; use Xmlnuke\Core\Classes\XmlnukeDocument; use Xmlnuke\Core\Module\BaseModule; class Home extends BaseModule { public function __construct() {} public function CreatePage() { $this->defaultXmlnukeDocument = new XmlnukeDocument("Title", "Abstract"); ... return $this->defaultXmlnukeDocument; } }
你可以轻松地向你的页面添加一些需求,而不必关心如何处理这些需求。例如,你可以定义你的页面需要身份验证、将被缓存或在SSL环境中执行。下面是示例
namespace MyProject\Modules; use Xmlnuke\Core\Module\BaseModule; class Home extends BaseModule { /** * requiresAutentication(), getAccessLevel() and getRole() handle the page security and access level */ public functon requiresAutentication() { return true; } public function getAccessLevel() { return \Xmlnuke\Core\Enum\AccessLevel::OnlyRole; } public function getRole() { return new array("DIRECTOR", "MANAGER"); } /** * useCache determines if the XMLNuke will store your page in a cache or not. * By default XMLNuke can store in the: * - \Xmlnuke\Core\Cache\ArrayCacheEngine (Static Array), * - \Xmlnuke\Core\Cache\FileSystemCacheEngine (File System), * - \Xmlnuke\Core\Cache\MemcachedEngine (MemCached), * - \Xmlnuke\Core\Cache\NoCacheEngine (Ignore Cache) * * You can configure your own cache strategy by implementing the interface * \Xmlnuke\Core\Cache\ICacheEngine. */ public function useCache() { if ($this->_action != "") { return false; } else { return true; } } /** * Determines if your page requires SSL or Not */ public function requiresSSL() { return \Xmlnuke\Core\Enum\SSLAccess::ForceSSL; } }
如果你使用经典获取器和设置器或属性与模型一起工作,你可以将其添加到你的页面中,XMLNuke将输出。例如
namespace MyProject\Classes; class MyClass { protected $_name; public function getName() ...; public function setName($value) ...; protected $_age; public function getAge() ...; public function setAge($value) ...; }
namespace MyProject\Modules; use MyProject\Classes; use Xmlnuke\Core\Classes\XmlnukeDocument; use Xmlnuke\Core\Module\BaseModule; class Home extends BaseModule { public function CreatePage() { $this->defaultXmlnukeDocument = new XmlnukeDocument("Title", "Abstract"); ... $myClass = new MyClass(); $myClass->setName('Joao'); $myClass->setAge(39); ... $this->defaultXmlnukeDocument->addXmlnukeObject($myClass); return $this->defaultXmlnukeDocument; } }
之后,你可以关联一个XSL片段来处理这些数据并生成HTML或其他你想要生成的XSL转换内容。你可以通过调用你的网络浏览器来获取原始XML或JSON数据
http://youserver/xmlnuke.php?module=byjg.home&raw=xml&spath=//MyProject_Classes_MyClass
<xmlnuke xpath="//MyProject_Classes_MyClass"> <MyProject_Classes_MyClass> <name>Joao</name> <age>39</age> </MyProject_Classes_MyClass> </xmlnuke>
或
http://yourserver/xmlnuke.php?module=byjg.home&raw=json&xpath=//MyProject_Classes_MyClass;
{ "MyProject_Classes_MyClass": { "name": "Joao", "age": "39" } }
请参阅Wiki获取更多示例;
安装
主分支需要PHP 5.3来运行。旧版本的PHP可以使用遗留的'php50'分支。
Composer:项目级别安装
Composer可以下载XMLNuke并在同一时间创建一个空XMLNuke项目。
为此,你必须创建一个空文件夹并将以下composer.json
文件放入其中
{ "require": { "byjg/xmlnuke": "dev-master" }, "minimum-stability": "dev", "scripts": { "post-install-cmd": [ "Xmlnuke\\Util\\Composer::postInstallCmd" ], "post-update-cmd" : [ "Xmlnuke\\Util\\Composer::postInstallCmd" ] } }
然后执行以下命令
composer install
此过程也适用于现有的XMLNuke项目。
Composer:使用global全局安装
您可以使用composer全局安装XMLNuke。为此,请执行以下命令:
# use dev-master for stable version # use dev-develop for unstable/develop versions # use the version number for specific version composer global require "byjg/xmlnuke=dev-master"
请确保文件夹~/.composer
可以被您的web服务器访问。
有趣的是,文件夹~/.composer/vendor/bin
是服务器的PATH。
export PATH=~/.composer/vendor/bin:$PATH
Composer:使用create-project进行全局安装
sudo composer create-project byjg/xmlnuke /opt/xmlnuke dev-master
命令行(Debian/Ubuntu)
您必须安装您的web服务器(Apache2、Lighttd、nginx等)。XMLNuke需要PHP。
apt-get install php5-xsl php5-json
下载XMLNuke包。您可以从以下网址下载:
- ZIP包(https://github.com/byjg/xmlnuke/archive/master.zip)或
- 通过Git或SVN从仓库下载。
在任何文件夹中提取包,例如/opt/xmlnuke。**注意**:XMLNuke文件夹不能被您的Web浏览器访问。
在您的终端运行
cd /opt/xmlnuke
./copy-dist-files.sh link yes
选择并创建一个用于您项目的文件夹。这个文件夹必须可以通过您的web浏览器访问。
mkdir /var/www/my-project
php /opt/xmlnuke/create-php5-project.php /var/www/my-project myproject en-us pt-br
ln -s /opt/xmlnuke/xmlnuke-common /var/www/my-project/common
现在,只需测试它
http://yourserver/my-project
Windows
您必须安装您的web服务器(Xampp、Apache2、IIS等)并配置它以运行PHP5脚本。请确保XSL扩展已安装。
下载XMLNuke包。您可以从以下网址下载:
- ZIP包(https://github.com/byjg/xmlnuke/archive/master.zip)或
- 通过Git或SVN从仓库下载。
在任何文件夹中提取包,例如D:\data\xmlnuke。
**注意**:XMLNuke文件夹不能被您的Web浏览器访问。
使用Windows资源管理器找到您的XMLNuke文件夹,双击文件"copy-dist-files.vbs"。按照说明操作。
选择并创建一个用于您项目的文件夹(例如c:\InetPub\wwwroot\my-project)。这个文件夹必须可以通过您的web浏览器访问。使用Windows资源管理器找到您的XMLNuke文件夹,双击文件"create-php5-project.vbs",并按照说明操作。
现在,只需测试它
http://yourserver/my-project
开发
master
分支是稳定版本。所有开发将在develop
分支上进行。合并请求将在develop
分支上接受。
Pre-Commit Hook。
您可以在每次提交之前执行所有单元测试的预提交钩子。使用以下命令安装此钩子:
cd <xmlnukedir>
ln -s <xmlnukedir>/utils/git/hooks/pre-commit .git/hooks