91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

使用 PHP 和 Web 技術(而不是 Electron)構建桌面應用程序

admin
2025年7月11日 16:52 本文熱度 104

介紹

Boson 是一個創新的跨平臺桌面應用程序開發平臺,它釋放了 Web 技術(PHP、JavaScript、HTML、CSS)的強大功能以及本機匯編的優勢。它的主要功能是將基于 Chromium 的 WebView 引擎和 PHP 解釋器直接集成到可執行文件應用程序中。

該解決方案允許開發人員:

  • 使用熟悉的堆棧技術 — 通過 HTML/CSS 創建接口并在 PHP(使用 JavaScript 元素)中實現邏輯,而無需學習特定于平臺的語言。
  • 通過 Chromium 引擎實現穩定渲染,在 Windows、macOS 和 Linux 上提供可靠的用戶體驗 。
  • 減少單個代碼庫計數器的開發時間 — 更改在所有平臺之間自動同步。
  • 簡化分發 — 自包含的二進制文件不需要安裝額外的運行時。

Boson 的設計功能使其成為想要超越瀏覽器應用程序的 Web 開發人員的正確選擇。該庫完全允許使用本機 API,而不是通常的工作流程,即自動將 Web 組件轉換為桌面界面?,F成的應用程序保留了本機程序的所有優勢,包括對文件系統和系統資源的訪問,同時保持跨平臺“開箱即用”。

Boson 不是什么?

Boson 不是一個 GUI 框架。 我們不是在這里決定您的應用程序的外觀或感覺。使用最適合您的工作流程的任何前端堆棧 — React、Angular、Vue、Svelte、jQuery,或者只是經典的 HTML 和 CSS。更喜歡 Bootstrap、Bulma 還是 Tailwind?去做吧。您的 UI,您的規則。

Boson 不啟動 HTTP 服務器 (與 NativePHP 不同)也不依賴 Node.js。沒有不穩定的解決方法,沒有額外的層,也沒有不必要的數據轉換。只需直接、簡化地訪問渲染器 - 所有這些都在一個統一的過程中完成。

Boson 不依賴繁重的依賴項 ,也不是 Electron 或 NativePHP 的分支。它利用了作系統上已有的工具,使您的應用程序保持輕量級。Boson 不像典型的 Electron 或 NativePHP 應用程序那樣消耗數百兆字節,而是將其占用空間保持在幾千字節——通過設計高效。

Boson 也沒有像 JPHP (Devel Studio/Devel Next) 那樣重新發明 PHP。它使用您已經熟悉和喜愛的現代 PHP——沒有分叉,沒有驚喜。

忘記復雜的設置或自定義 PHP 擴展。只需運行一個命令即可開始: composer require boson-php/runtime — 然后您就可以開始工作了。

安裝

運行時  — 充當 PHP 代碼和底層作系統之間的橋梁。這是您可以在運行時和開發期間使用的主要 API編譯器  – 允許您將工作結果構建到完成的項目中,以便分發。

運行時

Boson 運行時提供了庫的核心,并允許您運行出色的應用程序。

Library 作為 Composer 存儲庫提供,可以使用以下命令安裝在項目的根目錄中:

composer require boson-php/runtime

不要忘記在您的應用程序中包含自動加載文件。

<?php

require __DIR__ . '/vendor/autoload.php';

$app = new Boson\Application();

編譯器

Boson 編譯器使您能夠將工作結果組裝成最終產品。也就是說,導入到目標平臺的可執行文件中。

Library 作為 Composer 存儲庫提供,可以使用以下命令安裝在項目的根目錄中:

composer require boson-php/compiler --dev

編譯器只是開發時需要的,不是代碼執行時需要的,因此建議將其作為 --dev 包包含在內。

環境要求:PHP 8.4+ 開啟 ext-ffi 擴展

案例

您可以在 Web Components 中使用 Twig。為此,您需要遵循幾個簡單的步驟。

1. 在您的項目中安裝 Twig 組件:

composer require twig/twig

2. 創建 Twig 組件

之后,您應該創建一個支持 twig 渲染的組件。

use Boson\WebView\Api\WebComponents\ReactiveContext;
useBoson\WebView\Api\WebComponents\WebComponent;
useBoson\WebView\WebView;
useTwig\Environment;
useTwig\TemplateWrapper;

abstractclass TwigComponent extends WebComponent
{
    /**
     * In this case, the template will be initialized
     * once during the first render.
     */

    private TemplateWrapper $template {
        get => $this->template ??= $this->twig->createTemplate(
            template: $this->renderTwig(),
        );
    }

    publicfunction __construct(
        protected readonly Environment $twig,
        ReactiveContext $ctx,
        WebView $webview,
    )
 
{
        parent::__construct($ctx, $webview);
    }

    abstractprotectedfunction renderTwig()string;

    /**
     * Override the default render behavior by
     * redirecting it to a Twig template
     */

    #[\Override]
    finalpublicfunction render()string
    
{
        return$this->template->render(\get_object_vars($this));
    }
}

3. 創建 Instantiator

現在我們需要定義這些組件的確切創建方式,為此,我們應該創建自己的實例化器,它將按需返回新組件。

use Boson\WebView\Api\WebComponents\Instantiator\WebComponentInstantiatorInterface;
useBoson\WebView\Api\WebComponents\ReactiveContext;
useBoson\WebView\WebView;
useTwig\Environment;
useTwig\Loader\ArrayLoader;

final readonly class TwigComponentInstantiator implements
    WebComponentInstantiatorInterface
{
    private Environment $twig;

    publicfunction __construct()
    
{
        $this->twig = new Environment(new ArrayLoader());
    }

    privatefunction isTwigComponent(string $component)bool
    
{
        return \is_subclass_of($component, TwigComponent::class);
    }

    publicfunction create(WebView $webview, ReactiveContext $context)object
    
{
        $component = $context->component;

        // Pass twig as a first argument in case of passed
        // component extends from TwigComponent class
        if ($this->isTwigComponent($component)) {
            returnnew $component($this->twig, $context, $webview);
        }

        returnnew $component($context, $webview);
    }
}

4. 注冊實例化器

要確定應使用不同的實例化器,可以在 webview 配置中指定它。

$webComponentsConfig = new WebComponentsCreateInfo(
    instantiator: new TwigComponentInstantiator(),
);

$applicationConfig = new ApplicationCreateInfo(
    window: new WindowCreateInfo(
        webview: new WebViewCreateInfo(
            webComponents: $webComponentsConfig,
        ),
    ),
);

$app = new Boson\Application($applicationConfig);

5. Twig 組件

現在我們可以創建自定義 twig 組件了!

class MyTwigComponent extends TwigComponent
{
    protected array $items = [123];

    protected function renderTwig()string
    
{
        return <<<'twig'
            <ul>
                {% for item in items %}
                <li>{{ item }}</li>
                {% endfor %}
            </ul>
        twig;
    }
}

要注冊和檢查,只需寫幾行

$app->webview->defineComponent('my-list', MyTwigComponent::class);

$app->webview->html = '<my-list />';

?


該文章在 2025/7/11 16:52:11 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 三级采花三级在线 | 欧美一级A免费区 | 国产91视频一区 | 福利论坛导航 | 国产性生活视频 | 国产日韩精品在线 | 福利高清影院91 | 午夜亚洲中文电影 | 日本高清天码一区 | 91欧美亚洲| 国产欧美精品日韩 | 日韩免费视频播播 | 国产午夜网色淫 | 国产美女裸网站 | 日韩免费高清一级三 | 91自产啪 | 成人一区免费 | 国产福利在线免费 | 欧美日韩国产精品选 | 朋友的妈妈在线观看 | 国产精品首页熟女 | 国产伦理 | 国产乱码一区二区三 | 97韩剧网 | 国产黑丝一区 | 国产一区二区影视 | 成人激情午夜福 | 国产自产中文一区 | 欧美日韩在线第一 | 国产午夜视频 | 国产成a人亚 | 国产精品玖玖资 | 国产又猛又黄 | 精品免费视频76 | 91丨九色丨国产 | 国产午夜激情视频 | 中文字幕第一页 | 国产不卡视频一 | 久re色| 国产午夜福利一区 | 国产亚洲女人 |