QQ-группа для обсуждения: 515415726
8.1+
*
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
├─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"
]
];
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(); // Закрытие приложения
}
]
... // Добавление дополнительных элементов
];
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 )