PHPSciter 1.0 版本发布,轻松写桌面应用
本篇目錄
關于Sciter
Sciter是一个非常优秀的的跨平台GUI框架,它使用HTML5 + CSS来绘制界面,使用TIScritpt来做交互。Sciter由Andrew发起。这是一位非常资深的UI专家,以邀请专家的身份参与HTML5标准的制定,Evernote最早的三个开发者之一。Sciter主要的特点:
- 跨平台:Sciter支持Windows、Linux和MacOS
- 輕量級:Sciter整體的實現非常輕,只有幾兆大小
- 使用Html5實現:Sciter使用HTML,CSS來渲染窗口,使用TIScript做交互。表現力強,上手簡單。
Sciter作者正在開發 Sciter-JS項目,這個項目集成了quickjs。這個項目發布以後很快得到了很多人的關注,相信會吸引更多的人使用Sciter項目。
關于PHPSciter
PHPSciter是一個PHP的擴展,將Sciter集成到PHP中,這樣就可以使用PHP來開發桌面應用。對于廣大的PHPer來說,之前B/S架構下面的開發經驗基本上可以移植到Sciter下面來。這樣可以充分的享受PHP已有的各種類庫,快速的開發桌面應用工具。
安裝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事件的响应函数。
3. 当事件触发后,sciter引擎会将click事件的调用传给php的解释引擎。
4. 在callback里面通过PHPSciter::defineFunction()方法定义了响应函数。
5. PHP引擎调用该函数,并将结果返回。
6. 前段的JS更新页面元素。
關于我們
青岛龍之言软件有限责任公司由国内著名的 Swoole團隊和 禅道团队合资成立。Swoole团队是业内知名的PHP底层开发团队,为PHP贡献了协程、加密、监控等多种方案,有力地弥补了PHP在高并发高性能场景的短板。禅道团队是PHP语言的重度用户,先后使用PHP语言开发了四款開源軟件。两个团队在PHP社区上都有深厚的感情,都想为PHP社区做些自己的贡献。于是就诞生了龍之言这个公司。
龍之言公司主要的使命就是弥补PHP的短板,完善PHP的生态,为中国的PHP用户提供有力的技术支持。我们主要的工作方向有如下几个:
- 提高PHP在高性能高並發場景的適用性
- 適配國産化操作系統
- 完善各種類庫
- 加強PHP對人工智能場景的支持
- 加強PHP在物聯網場景的支持
- 加強PHP在打包安裝方面的支持
我們的項目將主要以開源的方式來進行發布,如果您有什麽好的想法,或者痛點,或者想參與到我們的開發中來,歡迎和我們聯系。
我們的聯系方式: guoxinhua@swoole.com

