Skip to content
Back to skills

Php

ASecurity

PHP development — OOP patterns, Laravel basics, WordPress plugin development, REST API endpoints, wpdb queries, security (sanitization, nonces)

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
developmentgophpsqlapidatabasesecurity

Works with

  • cursor
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add veekunth217/claude-scaffold-skill --skill php --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Php?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Php
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/veekunth217-php/badge)](https://www.skillsdirectory.com/skills/veekunth217-php)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: php
description: PHP development — OOP patterns, Laravel basics, WordPress plugin development, REST API endpoints, wpdb queries, security (sanitization, nonces)
version: 1.0.0
author: veekunth217
tags: [php, oop, laravel, wordpress, plugin, rest-api, wpdb, security, sanitization, nonces]
platforms: [claude-code, cursor, codex]
---

# PHP Skill

Modern PHP development with a focus on WordPress plugin development, OOP patterns, and security.

**RULE: Always show generated class/function signatures before writing full implementation. Wait for GO.**

> **🚧 Status: Stub — implementation pending**
>
> This reference skill has the structure but the snippet content is still being filled in
> (you'll see `<!-- TODO -->` placeholders below). It activates and tells Claude the topic
> exists, but won't yield deep snippets yet.
>
> **Want to help?** Pick any TODO, write the snippet, open a PR. See [CONTRIBUTING.md](../../CONTRIBUTING.md).
> Each contribution moves the skill closer to "Ready" status.

---

## Capabilities

### OOP PHP Patterns
<!-- TODO: Singleton, Factory, Observer patterns in PHP -->
<!-- TODO: Interfaces, abstract classes, traits -->
<!-- TODO: PHP 8.x features: named args, match, fibers, readonly, enums -->
<!-- TODO: Composer autoloading, PSR-4 namespace setup -->

### Laravel Basics
<!-- TODO: Routes, controllers, middleware, request validation -->
<!-- TODO: Eloquent ORM, migrations, factories, seeders -->
<!-- TODO: Blade templates, Livewire basics -->
<!-- TODO: Artisan commands, queues, jobs -->

### Custom Plugin Development
<!-- TODO: Plugin bootstrap pattern (main class, loader, activator, deactivator) -->
<!-- TODO: Admin pages, settings API, options -->
<!-- TODO: Shortcodes, widgets, Gutenberg blocks in PHP -->
<!-- TODO: Plugin update checker (custom update server) -->

### REST API Endpoints
<!-- TODO: register_rest_route, WP_REST_Controller base class -->
<!-- TODO: Authentication (nonce, application passwords, JWT) -->
<!-- TODO: Custom endpoints for WooCommerce data -->
<!-- TODO: Rate limiting, input validation, error responses -->

### Database Queries (wpdb)
<!-- TODO: $wpdb->get_results, get_row, get_var, insert, update, delete -->
<!-- TODO: Prepared statements — never interpolate user input -->
<!-- TODO: Custom table creation in plugin activation -->
<!-- TODO: Query optimization, EXPLAIN, slow query identification -->

### Security (Sanitization, Nonces)
<!-- TODO: sanitize_text_field, sanitize_email, esc_html, esc_attr, esc_url -->
<!-- TODO: wp_nonce_field, check_admin_referer, wp_verify_nonce -->
<!-- TODO: current_user_can() capability checks -->
<!-- TODO: SQL injection prevention, XSS prevention, CSRF protection -->

---

## Patterns Reference

### Secure wpdb query
```php
global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d AND status = %s",
        $user_id,
        $status
    )
);
```

### REST API endpoint
```php
add_action( 'rest_api_init', function() {
    register_rest_route( 'myplugin/v1', '/data/(?P<id>\d+)', [
        'methods'             => 'GET',
        'callback'            => 'myplugin_get_data',
        'permission_callback' => function() {
            return current_user_can( 'read' );
        },
        'args' => [
            'id' => [ 'required' => true, 'validate_callback' => 'is_numeric' ]
        ],
    ]);
});

function myplugin_get_data( WP_REST_Request $request ): WP_REST_Response {
    $id   = absint( $request->get_param( 'id' ) );
    $data = get_post_meta( $id, '_my_meta', true );
    return new WP_REST_Response( [ 'data' => $data ], 200 );
}
```

### Nonce verification
```php
// In form
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// On save
if ( ! isset( $_POST['myplugin_nonce'] ) ||
     ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ) {
    wp_die( 'Security check failed' );
}
```

<!-- TODO: Add full interactive workflows for each capability above -->

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.