1. Go to this page and download the library: Download odysee/iliad library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
odysee / iliad example snippets
namespace Iliad\Repositories;
abstract class BaseRepository
{
// Common repository methods
public function find(object $request): object;
public function getAll(object $request): object;
// ...
}
namespace Iliad\Repositories;
abstract class _BaseRepository
{
use Transaction, QueryBuilder;
protected Model $model;
protected string $dataClass;
// Core methods
public function getAll(): DataCollection;
public function find(int $id): Data;
// ...
}
namespace App\Repositories;
use App\Dto\UserData;
use App\Interfaces\UserRepositoryInterface;
use App\Models\User;
use Iliad\Transactions\Transaction;
use Iliad\Repositories\_BaseRepository;
use Iliad\Repositories\Concerns\QueryBuilder;
use Iliad\Transactions\TransactionManager;
class UserRepository extends _BaseRepository implements UserRepositoryInterface
{
use Transaction,
QueryBuilder;
protected string $dataClass = UserData::class;
public function __construct(
User $userModel,
TransactionManager $transactionManager
)
{
$this->transactionManager = $transactionManager;
parent::__construct();
$this->model = $userModel;
}
public function store(UserData $userData): UserData
{
$this->model->create($userData);
$this->transactionManager->commit();
return $results['model']->refresh()->getData();
}
public function update(UserData $userData): UserData
{
$user = $this->model->findOrFail($userData->id);
// Update logic here
$this->transactionManager->commit();
return $user->refresh()->getData();
}
public function destroy(int $id): void
{
// Delete logic here
}
}
namespace Iliad\Transactions;
trait Transaction
{
public ?TransactionManager $transactionManager = null;
private function getTransactionManager(): TransactionManager;
private function startTransactions(): void;
private function commitTransactions(): void;
private function flush(): void; // Deprecated, use commitTransactions() instead
// ...
}
namespace Iliad\Transactions;
class TransactionManager
{
public function beginTransaction(): void;
public function commit(): void;
public function rollback(): void;
public function transaction(callable $callback): mixed;
// ...
}
namespace Iliad\Repositories\Concerns;
trait QueryBuilder
{
public function collectionResponse(Builder|Model $query): DataCollection;
public function createCollection(Builder|Model $query): DataCollection;
public function createDataCollection(Builder|Model $query): DataCollection;
private function parseQueryDataToQuery(Builder|Model $query, QueryStringData $queryData): Builder;
public function sort(Builder $query, Request $request): Builder;
public function noSort(Builder $query): Builder;
// ...
}
namespace Iliad\DataTransferObjects;
class Dto
{
use StaticCreateFrom, StaticCreateDataCollection, ToArray;
}
namespace Iliad\Http\Controllers;
abstract class BaseController extends Controller
{
protected $model;
protected $resource;
protected array $rules = [];
public function index(Request $request);
public function show(Request $request);
public function store(Request $request): object;
public function update(Request $request): object;
public function destroy(int $id): void;
// ...
}
namespace Iliad\Http\Controllers;
abstract class _BaseController extends Controller
{
// Base controller functionality
}
namespace Iliad\Http\Controllers;
abstract class Controller
{
protected array $middleware = [];
public function middleware($middleware, array $options = []): ControllerMiddlewareOptions;
public function getMiddleware();
public function callAction($method, $parameters);
// ...
}
namespace App\Http\Controllers;
use App\Dto\UserData;
use App\Repositories\UserRepository;
use Exception;
use Iliad\Http\Controllers\_BaseController;
use Iliad\RouteAttributes\Attributes\Prefix;
use Iliad\RouteAttributes\Attributes\Resource;
use Spatie\LaravelData\DataCollection;
use Spatie\LaravelData\Exceptions\InvalidDataClass;
#[Prefix('api/v3')]
#[Resource(
resource: 'users',
apiResource: true,
except: ['destroy'],
names: 'api.v3.users',
parameters: ['users' => 'id'],
shallow: true,
)]
class UserController extends _BaseController
{
public function __construct(
protected UserRepository $userRepository,
) {}
/**
* @return DataCollection<UserData>
* @throws InvalidDataClass|\ReflectionException
*/
public function index(): DataCollection
{
return $this->userRepository->getAll();
}
/**
* @param int $id
* @return UserData
* @throws InvalidDataClass|\ReflectionException
*/
public function show(int $id): UserData
{
return $this->userRepository->find($id);
}
/**
* @param UserData $userData
* @return UserData
* @throws Exception
*/
public function store(UserData $userData): UserData
{
return $this->userRepository->store($userData);
}
/**
* @param UserData $userData
* @return UserData
*/
public function update(UserData $userData): UserData
{
return $this->userRepository->update($userData);
}
}
namespace Iliad\ExceptionHandler;
class HandlerDecorator implements ExceptionHandler
{
public function report(Throwable $e);
public function render($request, Throwable $e);
public function renderForConsole($output, Throwable $e);
public function reporter(callable $reporter): int;
public function renderer(callable $renderer): int;
public function consoleRenderer(callable $renderer);
// ...
}
namespace Iliad\Concerns;
trait Validator
{
private function validator(string $function, Request $request): void;
public function enforce($rules, int $status = 412): void;
// ...
}
namespace Iliad\Concerns;
trait ResolveId
{
public static function resolveId(): mixed;
}
namespace Iliad\Concerns;
trait WithData
{
public function getData();
}
namespace Iliad\Concerns;
trait Editable
{
public function formatMessage(): void;
private function replace($fields, $variable): void;
// ...
}
GET /api/users/1?with=posts,comments
GET /api/users/1?with=posts.comments
GET /api/users?scopes=active,premium
GET /api/users?paginate=true&per_page=10
GET /api/users?groupBy=role
GET /api/users/1?with=posts&except=posts.body
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.