Examples
Real-world examples of using WPZylos CLI Devtool.
Creating a New Plugin
# Create plugin with default namespace
vendor/bin/wpzylos make:plugin ecommerce-plugin
# Create plugin with custom namespace
vendor/bin/wpzylos make:plugin ecommerce-plugin --namespace=MyCompany\\Ecommerce
Result:
ecommerce-plugin/
+-- app/
— +-- Core/PluginContext.php
— +-- Http/Controllers/
— +-- Providers/
+-- bootstrap/app.php
+-- config/app.php
+-- database/migrations/
+-- resources/views/
+-- ecommerce-plugin.php
+-- composer.json
Building a Products Feature
Step 1: Create Controller
vendor/bin/wpzylos make:controller ProductController --resource
Generated app/Http/Controllers/ProductController.php:
<?php
namespace MyPlugin\Http\Controllers;
use WPZylos\Framework\Http\Request;
use WPZylos\Framework\Http\Response;
class ProductController
{
public function index(Request $request): Response
{
return Response::html(view('products.index'));
}
public function show(Request $request, int $id): Response
{
return Response::html(view('products.show', ['id' => $id]));
}
public function store(Request $request): Response
{
// Validate and create
return Response::json(['success' => true], 201);
}
public function update(Request $request, int $id): Response
{
// Validate and update
return Response::json(['success' => true]);
}
public function destroy(Request $request, int $id): Response
{
// Delete
return Response::json(['success' => true]);
}
}
Step 2: Create Form Request
vendor/bin/wpzylos make:request StoreProductRequest
Generated app/Http/Requests/StoreProductRequest.php:
<?php
namespace MyPlugin\Http\Requests;
use WPZylos\Framework\Http\FormRequest;
class StoreProductRequest extends FormRequest
{
public function authorize(): bool
{
return current_user_can('manage_options');
}
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'price' => ['required', 'numeric', 'min:0'],
];
}
}
Step 3: Create Migration
vendor/bin/wpzylos make:migration create_products_table --create=products
Generated database/migrations/2024_01_01_000000_create_products_table.php:
<?php
use WPZylos\Framework\Database\Migration;
use WPZylos\Framework\Database\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('products', function ($table) {
$table->id();
$table->string('name');
$table->decimal('price', 10, 2);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('products');
}
};
Adding Fields to Existing Table
vendor/bin/wpzylos make:migration add_sku_to_products --table=products
Generated migration:
<?php
use WPZylos\Framework\Database\Migration;
use WPZylos\Framework\Database\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('products', function ($table) {
// Add your columns here
});
}
public function down(): void
{
Schema::table('products', function ($table) {
// Reverse the changes
});
}
};
Batch Generation
Create multiple files for a feature:
# Create all files for a "Category" feature
vendor/bin/wpzylos make:controller CategoryController --resource
vendor/bin/wpzylos make:request StoreCategoryRequest
vendor/bin/wpzylos make:request UpdateCategoryRequest
vendor/bin/wpzylos make:migration create_categories_table --create=categories
Related
- Usage Guide — Command usage
- API Reference — Full reference
- wpzylos.com — Framework documentation