Быстрый старт

Это руководство поможет вам быстро создать ваше первое приложение на Triangle Framework.

Установка

Создайте новый проект:

composer create-project triangle/web my-first-app
cd my-first-app

Запуск

Запустите приложение:

php master start

Приложение будет доступно по адресу http://localhost:88.

Создание первого контроллера

Создайте файл app/controller/Welcome.php:

<?php

namespace App\Controller;

use Triangle\Engine\Request;
use Triangle\View\View;

class Welcome
{
    public function index(Request $request)
    {
        return View::render('welcome', [
            'message' => 'Hello, Triangle!',
        ]);
    }
}

Создание представления

Создайте файл app/view/welcome.phtml:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1><?= htmlspecialchars($message) ?></h1>
</body>
</html>

Определение маршрута

Важно: Файл config/route.php — это не конфигурационный файл с return, а выполняемый PHP-код!

Обновите config/route.php:

<?php
// config/route.php

use Triangle\Router;

// Использование автоматической маршрутизации
// Контроллер Welcome доступен по адресу /welcome/index

// Или явно задать маршрут
Router::get('/', [\App\Controller\Welcome::class, 'index']);

Альтернатива: Closure-маршрут

Вы также можете использовать анонимные функции:

<?php
// config/route.php

use Triangle\Request;
use Triangle\Response;
use Triangle\Router;

Router::get('/', function (Request $request): Response {
    return response('Hello, Triangle!');
});

Работа с базой данных

Настройка подключения

Обновите config/database.php (это конфигурационный файл с return):

<?php
// config/database.php

return [
    'default' => 'mysql',
    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'host' => '127.0.0.1',
            'database' => 'myapp',
            'username' => 'root',
            'password' => '',
        ],
    ],
];

Создание модели

Создайте app/model/User.php:

<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $table = 'users';
}

Использование в контроллере

<?php

namespace App\Controller;

use App\Model\User;
use Triangle\Engine\Request;

class UserController
{
    public function index()
    {
        $users = User::all();
        return response()->json($users);
    }
}

API-эндпоинт

Создайте простой API в config/route.php:

<?php
// config/route.php

use Triangle\Request;
use Triangle\Response;
use Triangle\Router;

Router::get('/api/users', function (Request $request): Response {
    $users = User::all();
    return response()->json($users);
});

Router::post('/api/users', function (Request $request): Response {
    $user = User::create([
        'name' => $request->input('name'),
        'email' => $request->input('email'),
    ]);
    
    return response()->json($user, 201);
});

Разница между конфигурационными файлами

Конфигурационные файлы (с return):

  • config/app.php
  • config/middleware.php
  • config/database.php
  • config/session.php
  • И другие...

Исполняемый код (без return):

  • config/route.php — здесь вызываются методы Router::get(), Router::post() и т.д.

Следующие шаги