Start
In this tutorial you will learn about the most common aspects of the framework:
register new
Providerin your App and declare all featurescreate routes for
GET,POSTandDELETErequestsimplement
Controlleractions for all routesconfigure database connection
create new database migration using
Migrationextend
EntityandRecordclasses for ORMimplement
Resolverfor resolving objects based on request parameterscreate
Formfor request validationcreate
MiddlewareandAfterwareas before- and after- request handlerslearn about
EventandHandlercreate your first console
CommandandJobfor cronjob
Prerequisites:
create your project
composer create-project pckg-skeleton,optionally install your frontend dependencies -
pnpm i,initialize the project -
console project:initbootstrap your app -
console app:create
Directory/File organization
├── config
│ ├── database.php
├── src
│ ├── Foo.php # 1. Registers MyBaseProvider
│ ├── YourVendor/Foo
│ │ ├── Afterware
│ │ │ ├── LogResponseLength.php
│ │ ├── Controller
│ │ │ ├── MyController.php
│ │ ├── Console
│ │ │ ├── PrintDatetime.php
│ │ ├── Form
│ │ │ ├── CreateDummy.php
│ │ ├── Handler
│ │ │ ├── LogInserting.php
│ │ ├── Middleware
│ │ │ ├── LogResolved.php
│ │ ├── Migration
│ │ │ ├── CreateDummyTables.php
│ │ ├── Provider
│ │ │ ├── MyBaseProvider.php
│ │ ├── Entity
│ │ │ ├── Dummies.php
│ │ ├── Record
│ │ │ ├── Dummy.php
│ │ ├── Resolver
│ │ │ ├── Dummy.phpNotes:
App
FooregistersYourVendor\Foo\Provider\MyBaseProviderProvider
MyBaseProviderregisters:routes from
MyControlleroptionally validated byCreateDummyrequest/form and resolved byDummyrecord resolver,console command
PrintDatetimeLogResolvedmiddleware,LogResponseLengthafterware andLogInsertingevent handler
Records and entities are auto-wired or resolved by the framework
App and Provider
Create new provider and register it in your base app class.
<?php
use Pckg\Framework\Provider;
use YourVendor\Foo\Provider\MyBaseProvider;
class Foo extends Provider
{
public function providers()
{
return [
\Pckg\Migrator\Provider\Migrator::class, // for running migrations
\Pckg\Framework\Provider\Framework::class, // for running console commands
// \Pckg\Manager\Provider\Manager::class, // for asset management
MyBaseProvider::class,
];
}
}<?php
namespace YourVendor\Foo\Provider;
use Pckg\Framework\Provider;
class MyBaseProvider extends Provider {
}
Routing
Register a new route in your provider:
<?php
use YourVendor\Foo\Controller\MyController;
...
public function routes() {
return [
'index' => route('/', 'index', MyController::class),
/*
routeGroup([
'controller' => MyController::class,
// 'urlPrefix' => '',
// 'namePrefix' => '',
], [
'index' => route('/'),
]),
*/
];
}
...
Controller and Action
Create a controller and action:
<?php
namespace YourVendor\Foo\Controller;
class MyController {
public function getIndexAction() {
return [
'foo' => 'bar',
];
}
}
```
</div>
Now open your browser at https://localhost/
```json
{"foo":"bar"}Last updated
Was this helpful?