Inhaltsverzeichnis
3.1.  运行环境:同时支持cs桌面与web方式
3.2.  界面使用html5+css+js实现
3.3.  Cli接口互操作,与web接口互操作
3.4.  其他----------流程
3.4.1.  Html5界面确定要是有的后台引擎$parser=php c# java js
3.4.2.  桌面引擎dispatch 
3.4.3.  使用cli引擎转发到php
3.4.4.  phprun.bat
3.4.5.  Php同时支持web与桌面的参数传递
3.4.6.  桌面程序$_GET参数的解析,自定义req引擎
3.4.7.  回调js 通过$callback
4.1.  使用cmd.exe还是直接bat。。
Heim Backend-Entwicklung PHP-Tutorial Atitit.使用引擎加脚本架构的设计?使用php,js来开发桌面程序

Atitit.使用引擎加脚本架构的设计?使用php,js来开发桌面程序

Jun 23, 2016 pm 01:27 PM

Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。

 

 

1. 引擎加脚本架构 跨平台,桌面与web的优势1

2. 架构桌面引擎(java,c#)2

3. php桌面引擎要点2

3.1. 运行环境:同时支持cs桌面与web方式2

3.2. 界面使用html5+css+js实现2

3.3. Cli接口互操作,与web接口互操作2

3.4. 其他----------流程2

3.4.1. Html5界面确定要是有的后台引擎$parser=php c# java js2

3.4.2. 桌面引擎dispatch3

3.4.3. 使用cli引擎转发到php3

3.4.4. phprun.bat4

3.4.5. Php同时支持web与桌面的参数传递4

3.4.6. 桌面程序$_GET参数的解析,自定义req引擎4

3.4.7. 回调js 通过$callback5

4. 常见问题与最近实践5

4.1. 使用cmd.exe还是直接bat。。5

5. 其他的php桌面程序方案6

6. 参考6

 

1.  引擎加脚本架构 跨平台,桌面与web的优势

跨平台方面java很不错。但是java需要编译。。如果需要一个桌面程序,需要灵活修改,可以脚本写成的化,就可以考虑引擎加脚本架构 。。。使用php或者js来做桌面后端。。。

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

 

2.  架构桌面引擎(java,c#)

 

3.  php桌面引擎要点

3.1.  运行环境:同时支持cs桌面与web方式

3.2.  界面使用html5+css+js实现

3.3.  Cli接口互操作,与web接口互操作

3.4.  其他----------流程

3.4.1.  Html5界面确定要是有的后台引擎$parser=php c# java js

使用dwr引擎转换为http param..

最好可以有个总配置要使用什么引擎,也可以单独页面配置不同的引擎。。

 

3.4.2.  桌面引擎dispatch 

Proj.amazon splider

  //供JS调用

        public void sendNSCommand(Object message, Object message2, Object message3, Object message4, Object message5, Object message6, Object message7)

        {

          //  Object[] objs = (Object[])message;

            Console.WriteLine(message);

 

            String meth =(String) message;

            //p822

            string paramsx=((string) message2);

            if (paramsx.Contains("$parser"))

            {

                String r = new php?ParesrX(paramsx).exec().Trim() ;

                Map m = new ParamX().urlParams2Map((string)message2);

                 String callback = (String)m.get("$callback");

                 String js2 = callback + "('" + r + "');";

                 WebBrowser webBrowser1 = (WebBrowser)iocx.getBean("webBrowser1");

                 object[] objects = new object[1];

                 objects[0] = r;

                 Object o = webBrowser1.Document.InvokeScript(callback, objects);

                 Console.WriteLine("==exe js rzt:" + o);

                 return;

            }

 

3.4.3.  使用cli引擎转发到php

 class ParesrX

    {

        private string meth;

 

        public ParesrX(string meth)

        {

            // TODO: Complete member initialization

            this.meth = meth;

 

        }

 

        internal String exec()

        {

            Map m =new  ParamX().urlParams2Map(this.meth);

            if (((String)m.get("$parser")).Equals("php"))

            {

                String urlparams = m.serialize();

                String cmd = "@qut" + pathx.StartupPath() + "/phprun.bat@qut  @qut" + pathx.StartupPath() + "/com.attilax/api.php@qut  @qut" + urlparams + "@qut";

              cmd=cmd.Replace("@qut","\"");

                Console.WriteLine(cmd);

            String r=    new Cmd().RunCmd(cmd);

            return r;

            }

            return "";

 

 

3.4.4.  phprun.bat

@d:

 

@"%~dp0php5.3.10\php.exe"  -c "%~dp0php5.3.10\php.ini"  -f %1  %2  %3

 

 

3.4.5.  Php同时支持web与桌面的参数传递

/com.attilax/api.php@qut  @qut" + urlparams + "@qut";

Web方式    api.php?urlparams....

 

3.4.6.  桌面程序$_GET参数的解析,自定义req引擎

 if(count($_GET)==0) //cli mode

 {

 

 $param=$argv[1]; 

  $GLOBALS["varx"]["argv"]=$argv ;

 

 $_GET=urlParams2Map($param); 

   $GLOBALS["varx"]["get"]=$_GET ;

  

 

 }

 

 

 

function   urlParams2Map( $params) {

 $o=array();

$a=explode('&',$params);

 $GLOBALS["varx"]["a"]=$a ;

  $GLOBALS["varx"]["params"]=$params;

  foreach( $a as $k2=>$v2 )

  {

 

  $a2=explode("=",$v2);

   $k=$a2[0];

   $v=$a2[1];

   $o[$k]=$v;

  }

   $GLOBALS["varx"]["o"]=$o ;

return $o;

 

}

 

3.4.7.  回调js 通过$callback

    String callback = (String)m.get("$callback");

                 String js2 = callback + "('" + r + "');";

                 WebBrowser webBrowser1 = (WebBrowser)iocx.getBean("webBrowser1");

                 object[] objects = new object[1];

                 objects[0] = r;

                 Object o = webBrowser1.Document.InvokeScript(callback, objects);

 

4.  常见问题与最近实践

4.1.  使用cmd.exe还是直接bat。。

推荐使用bat方式。。否则cmd.exe 

 

        String cmd = "@qut" + pathx.StartupPath() + "/phprun.bat@qut  @qut" + pathx.StartupPath() + "/com.attilax/api.php@qut  @qut" + urlparams + "@qut";

              cmd=cmd.Replace("@qut","\"");

 

正确的方式是,将 /C 后面所有字符,再加上双引号:

对比两段命令,很多人马上就明白为什么了。

因为,这里相当于有两条命令,并且是嵌套的,外面的命令是:

cmd.exe /C "command"

命令是 cmd.exe,两个参数分别是 /C, "command",我们这里的 command 是

 

      

5.  其他的php桌面程序方案

php gtk

WinBinder 

 

6.  参考

用PHP开发桌面应用.html

执行 CMD 时,参数加引号常见问题 - 的米-漠石's Blog - 博客频道 - CSDN.NET.html

C#执行DOS命令(CMD命令) - 杨友山 - 博客频道 - CSDN.NET

paip.asp vbs通过CLI命令行调用PHP代码 - attilax的专栏 - 博客频道 - CSDN.NET

paip.执行shell cmd 命令uapi java php python总结 - attilax的专栏 - 博客频道 - CSDN.NET

 

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu. Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

See all articles