PHPSciter跨平臺 GUI 框架
關于Sciter
Sciter 是一個非常優(yōu)秀的的跨平臺GUI框架,它使用HTML5 + CSS來繪制界面,使用TIScritpt來做交互。
Sciter由Andrew發(fā)起。這是一位非常資深的UI專家,以邀請專家的身份參與HTML5標準的制定,Evernote最早的三個開發(fā)者之一。Sciter主要的特點:
- 跨平臺:Sciter支持Windows、Linux和MacOS
- 輕量級:Sciter整體的實現(xiàn)非常輕,只有幾兆大小
- 使用Html5實現(xiàn):Sciter使用HTML,CSS來渲染窗口,使用TIScript做交互。表現(xiàn)力強,上手簡單。
Sciter作者正在開發(fā) Sciter-JS項目,這個項目集成了quickjs。這個項目發(fā)布以后很快得到了很多人的關注,相信會吸引更多的人使用Sciter項目。
關于PHPSciter
PHPSciter是一個PHP的擴展,將Sciter集成到PHP中,這樣就可以使用PHP來開發(fā)桌面應用。對于廣大的PHPer來說,之前B/S架構下面的開發(fā)經驗基本上可以移植到Sciter下面來。這樣可以充分的享受PHP已有的各種類庫,快速的開發(fā)桌面應用工具。
安裝PHPSciter
我們已經幫大家打好了各個平臺下面的包:
Windows: https://github.com/longyan/phpsciter/raw/master/package/windows/phpsciter.zip
Ubuntu: https://github.com/longyan/phpsciter/raw/master/package/deb/phpsciter_php7.4.3-4ubuntu2.4_am64.deb
CentOS: https://github.com/longyan/phpsciter/raw/master/package/rpm/php7.4-phpsciter-7.4.3-5.x86_64.rpm
運行demo
以windows為例,解壓縮之后,有一個example目錄。
D:\Sciter>php examples\phpsciter-callback\index.phpt
<?php
$oSciter = new PHPSciter();
$oSciter->setResourcePath('file://' . __DIR__ . '/res/');
$oSciter->setWindowFrame(100, 100, 100 + 500 + 1, 100 + 500 + 1);
$oSciter->setWindowTitle('hello');
$oSciter->loadFile('index.php');
$oSciter->setOption(PHPSciter::SCITER_SET_SCRIPT_RUNTIME_FEATURES,PHPSciter::ALLOW_FILE_IO | PHPSciter::ALLOW_SOCKET_IO | PHPSciter::ALLOW_EVAL |PHPSciter::ALLOW_SYSINFO);
$oSciter->run(PHPSciter::SW_TITLEBAR | PHPSciter::SW_RESIZEABLE | PHPSciter::SW_MAIN | PHPSciter::SW_ENABLE_DEBUG|PHPSciter::SW_CONTROLS);
?>
這個運行之后,會加載res目錄下面的index.php,里面的代碼如下:
<?php
include_once "callback.php";
?>
<html>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
<div>
Request & Get Int:
<button id="plus_btn">Click Plus</button>
<button id="sum_btn">Click Sum</button>
<br/>
</div>
<script type="text/tiscript">
$(#plus_btn).on("click", function() {
var plus = view.plus(100);
$(#data_json).html = JSON.stringify(plus);
$(#data_area).html = "";
});
$(#sum_btn).on("click", function() {
var sum = view.sum(1,2,3);
$(#data_json).html = JSON.stringify(sum);
$(#data_area).html = "";
}); callback.phpl里面的代碼如下:
<?php
class classTest
{
static public function plus($a)
{
return $a + 30;
}
static public function sum($a, $b, $c)
{
return $a + $b + $c;
}
}
PHPSciter::defineFunction('plus', 'classTest::plus');
PHPSciter::defineFunction('sum', 'classTest::sum');
運行之后的界面:
運行機制
1. 啟動Sciter窗口,加載index.php
2. index.php里面通過html的方式定義了若干的元素,并綁定了其click事件的響應函數(shù)。
3. 當事件觸發(fā)后,sciter引擎會將click事件的調用傳給php的解釋引擎。
4. 在callback里面通過PHPSciter::defineFunction()方法定義了響應函數(shù)。
5. PHP引擎調用該函數(shù),并將結果返回。
6. 前段的JS更新頁面元素。
關于龍之言
青島龍之言軟件有限責任公司由國內著名的 Swoole團隊和 禪道團隊合資成立。Swoole團隊是業(yè)內知名的PHP底層開發(fā)團隊,為PHP貢獻了協(xié)程、加密、監(jiān)控等多種方案,有力地彌補了PHP在高并發(fā)高性能場景的短板。禪道團隊是PHP語言的重度用戶,先后使用PHP語言開發(fā)了四款開源軟件。兩個團隊在PHP社區(qū)上都有深厚的感情,都想為PHP社區(qū)做些自己的貢獻。于是就誕生了龍之言這個公司。
龍之言公司主要的使命就是彌補PHP的短板,完善PHP的生態(tài),為中國的PHP用戶提供有力的技術支持。我們主要的工作方向有如下幾個:
- 提高PHP在高性能高并發(fā)場景的適用性
- 適配國產化操作系統(tǒng)
- 完善各種類庫
- 加強PHP對人工智能場景的支持
- 加強PHP在物聯(lián)網(wǎng)場景的支持
- 加強PHP在打包安裝方面的支持
我們的項目將主要以開源的方式來進行發(fā)布,如果您有什么好的想法,或者痛點,或者想?yún)⑴c到我們的開發(fā)中來,歡迎和我們聯(lián)系。我們的聯(lián)系方式: [email protected]
