1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kllxs_admin-php-webview-frame

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Разработка десктопных приложений на PHP

QQ-группа для обсуждения: 515415726

Версия PHP Расширение FFI-EXT Лицензия

Требования

  • PHP 8.1+
  • FFI *
  • Система Windows

Отдельное использование

composer create-project kingbes/framework desktop

Установка зависимостей

cd src
composer install

Запуск приложения

Двойной клик по файлу windows.bat только для системы Windows

Встроенная среда

.\php\php.exe src/index.php

Системная среда

php src/index.php

Нормы названий

Соблюдайте нормы названий PSR-2 и PSR-4 для автоматической загрузки.

Компиляция только для системы Windows

.\php\php.exe build.php -exclude="\view"

Дополнительные команды компиляции

-debug -name=xxx -exclude="\xxx"

.\php\php.exe build.php -debug  # Компиляция в режиме отладки
.\php\php.exe build.php -name=myapp  # Имя файла myapp 
.\php\php.exe build.php -exclude="\view"  # Пропуск папки view, для множественного пропуска используйте: -exclude="\view,\asd\123.txt,..."

Разработка

Основы

Структура корневой директории

├─php             php среда
│  ├─src          приложение
├─build.php       файл компиляции
├─compiler.exe    win файл компиляции
├─favicon.ico     иконка
├─README.md       README файл
└─windows.bat     файл запуска для Windows

Структура директории `src````

├─app приложение │ ├─config конфигурация │ │ ├─app.php конфигурация приложения │ │ ├─database.php конфигурация базы данных │ │ ├─menu.php конфигурация меню │ │ └─middleware.php конфигурация middleware │ │ │ ├─controller контроллеры │ ├─kingbes исходный код │ ├─middleware middleware │ ├─ ... дополнительные библиотеки │ │ │ ├─public.php общие функции │ └─sqlite3.db sqlite файл │ ├─vendor библиотеки composer ├─view представления ├─composer.json composer файл ├─index.php входной файл └─README.md README файл


### Конфигурация

#### app.php Конфигурация приложения

```php
return [
    // Окно
    "windows" => [
        // Заголовок
        "title" => "PHP GUI",
        // Ширина
        "width" => 640,
        // Высота
        "height" => 480,
        // Режим отладки, режим не отладки: false
        "debug" => true
    ],
    // По умолчанию контроллер
    "default_controller" => "Home",
    // По умолчанию часовой пояс
    "default_timezone" => "Asia/Shanghai",
    // По умолчанию представление
    "default_view" => [
        // Имя директории
        "dirname" => "view",
        // Расширение файла
        "suffix" => "html"
    ]
];

database.php Конфигурация базы данных с использованием независимой библиотеки ThinkORM

return [
    'default' => 'sqlite',
    'connections' => [
        'sqlite' => [
            // Тип базы данных
            'type'        => 'sqlite',
            // Имя базы данных
            'database'    => app_path("sqlite3.db"),
            // Кодировка базы данных по умолчанию utf8
            'charset'     => 'utf8',
            // Префикс таблиц
            'prefix'      => '',
        ],
    ],
];
```#### menu.php Конфигурация меню с маленькими иконками

```php
return [
    [
        "name" => "Показать", // Название
        "fn" => function () { // Функция, вызываемая при нажатии
            app()->show_win(); // Вызов функции отображения окна
        }
    ],
    [
        "name" => "Выход",
        "fn" => function () {
            app()->destroy_win(); // Закрытие приложения
        }
    ]
    ... // Добавление дополнительных элементов
];

Эффект

middleware.php Конфигурация middleware

return [
    // Пример
    app\middleware\TestMiddleware::class
];

Контроллеры и представления

Каждый файл контроллера соответствует одному файлу представления. Контроллер Home.php соответствует представлению Home.html, имена файлов совпадают.

Общие функции

Home.php контроллер, каждая общая функция связана с функцией JavaScript, которая может быть вызвана напрямую из JavaScript.

namespace app\controller;

class Home
{
    /**
     * get function
     *
     * @param integer $seq Число вызовов
     * @param array $req Параметры, переданные из JavaScript
     * @return array
     */
    public function get(int $seq, array $req): array
    {
        /**
         * Ваш код логики
         */
        ...

        return ["PHP WINDOWS GUI"];
    }
}

Home.html представление запускает

<!DOCTYPE html>
<html lang="ru">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Документ</title>
    <!-- Загрузка ресурсных файлов -->
    <link rel="stylesheet" href="./public/css/app.css">
</head>
```<body>
    <button onclick="onBtn()">Запустить get</button>
    <script>
        function onBtn(){
            // Прямой вызов в js
            get('hello').then(function (res) {
                console.log(res) // Полученный результат
            })
        }
        
    </script>
</body></html>

Общие параметры

$width, $height, $hint изменяют размер текущего окна

namespace app\controller;

// Типы подсказок окна
use app\kingbes\PhpWebview\WindowSizeHint;

class SizeWin
{
    /**
     * Изменение ширины текущего окна переменная
     *
     * @var integer
     */
    public int $width = 800;
    /**
     * Изменение высоты текущего окна переменная
     *
     * @var integer
     */
    public int $height = 800;
    /**
     * Изменение подсказки текущего окна переменная
     *
     * @var WindowSizeHint
     */
    public WindowSizeHint $hint = WindowSizeHint::HINT_FIXED;
}

Перемещение страниц

Обычное перемещение страниц не может быть связано с функциями контроллера, вызов функции app_jump("название файла контроллера") в js

<button onclick="app_jump('About')">Перемещение на about</button> успешно перемещает на страницу About и связанный контроллер

<a href="About.html">Перемещение на about</a> перемещает, но не связывает с соответствующей функцией контроллера

Мидлвары

class TestMiddleware
{
    public function process(string $page, object $next_class): bool
    {
        var_dump("Следующая страница");
        var_dump($page);
        var_dump("Следующий класс");
        var_dump($next_class);
        // true разрешает, false запрещает
        return true;
    }
}

База данных

orm библиотека thinkphp перейти

Встроенные общие функции


/**
 * Корневой путь функция
 *
 * @param string ...$path соединение
 * @return string
 */
function base_path(string ...$path): string {}

/**
 * Путь app функция
 *
 * @param string ...$path соединение
 * @return string
 */
function app_path(string ...$path): string {}
```/**
 * функция приложения app
 *
 * @return object
 */
function app(): object {}/**
 * функция перехода на страницу app_jump
 *
 * @param string $page
 * @return void
 */
function app_jump(string $page): void {}

/**
 * функция сообщения диалога dialog_msg
 *
 * @param string $str
 * @param integer $type
 * @return boolean
 */
function dialog_msg(string $str, int $type = 0): bool {}

/**
 * функция ввода диалога dialog_prompt
 *
 * @return string
 */
function dialog_prompt(): string {}

/**
 * функция открытия диалога файла dialog_file
 *
 * @return string
 */
function dialog_file(): string {}

/**
 * функция открытия диалога папки dialog_dir
 *
 * @param string $default_dir путь по умолчанию
 * @return string
 */
function dialog_dir(string $default_dir = ""): string {}

/**
 * функция сохранения диалога файла dialog_save
 *
 * @param string $content содержимое
 * @param string $filename имя файла, например: test.txt
 * @param string $path путь сохранения, например: D:/dir
 * @return boolean
 */
function dialog_save(
    string $content,
    string $filename,
    string $path = ""
): bool {}

## Иконки

Иконки должны находиться в каталоге запуска, иначе они не отображаются.

# версия для десктопа webman-webview

[Гитリー](https://gitee.com/kllxs_admin/webview-jacketing)

# версия для десктопа Linux php-webview

Расширение [webview.so](https://github.com/KingBes/php-webview-expand) устаревшая версия

# Связанные проекты

[webview](https://github.com/webview/webview) [php-webview](https://github.com/0hr/php-webview) [dialog](https://github.com/ttytm/dialog) [static-php-cli](https://github.com/crazywhalecc/static-php-cli)

[Сборка в установочный пакет](https://jrsoftware.org/isinfo.php)

#### Благодарности

Дайго

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

🏆 Основанный на webview2 фреймворк для разработки десктопных приложений, позволяющий JavaScript и PHP взаимодействовать напрямую, без необходимости использования оболочки. Развернуть Свернуть
MIT
Отмена

Обновления (18)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kllxs_admin-php-webview-frame.git
git@api.gitlife.ru:oschina-mirror/kllxs_admin-php-webview-frame.git
oschina-mirror
kllxs_admin-php-webview-frame
kllxs_admin-php-webview-frame
master