PHP code example of grayphp / micro

1. Go to this page and download the library: Download grayphp/micro 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/ */

    

grayphp / micro example snippets


use system\router\Route;
Route::get('/path',[controller::class,'method']);
Route::method('/path',callback);

Route::any('/profile', ['controller' => HomeController::class, 'profile', 'middleware' => UserAuth::class]);

Route::get('/user/$id',function($id)){
    print $id;
}


$db = DB();

//Get the post id = 3;
$post = $db->post[3];
//Check if a row exists
if (isset($db->post[3])) {
    echo 'exists';
}
//Delete a post
unset($db->post[3]);
//Update a post
$db->post[3] = [
    'title' => 'Hello world'
];
//Insert a new post
$db->post[] = [
    'title' => 'Hello world 2'
];
//Tables implements the Countable interface
$totalPost = count($db->post);

$post = $db->post->get(['slug' => 'post-slug']);

$post = $db->post->getOrCreate(['slug' => 'post-slug']);

//get a row by id
$post = $db->post[34];
//Get/modify fields values
echo $post->title;
$post->title = 'New title';
//Update the row into database
$post->save();
//Remove the row in the database
$post->delete();
//Create a new row
$newPost = $db->post->create(['title' => 'The title']);
//Insert the row in the database
$newPost->save();

//Create an UPDATE query with the table post
$updateQuery = $db->post->update(['title' => 'New title']);
//Add conditions, limit, etc
$updateQuery
    ->where('id = ', 23)
    ->limit(1);
//get the query as string
echo $updateQuery; //UPDATE `post` ...
//execute the query and returns a PDOStatement with the result
$PDOStatement = $updateQuery();

//insert a new post
$id = $db->post
    ->insert([
        'title' => 'My first post',
        'text' => 'This is the text of the post'
    ])
    ->get();
//Delete a post
$db->post
    ->delete()
    ->where('id = ', 23)
    ->get();
//Count all posts
$total = $db->post
    ->selectAggregate('COUNT')
    ->get();
//note: this is the same like count($db->post)
//Sum the ids of all posts
$total = $db->post
    ->selectAggregate('SUM', 'id')
    ->get();

$posts = $db->post
    ->select()
    ->where('id > ', 10)
    ->orderBy('id ASC')
    ->limit(100)
    ->get();
foreach ($posts as $post) {
    echo $post->title;
}

$post = $db->post
    ->select()
    ->one()
    ->where('id = ', 23)
    ->get();
echo $post->title;

//Get the post id = 23
$post = $db->post[23];
//Select the category related with this post
$category = $db->category
    ->select()
    ->relatedWith($post)
    ->one()
    ->get();

//Get the category id=34
$category = $db->category[34];
//Load the posts of this category
$posts = $category->post;
//This is equivalent to:
$posts = $db->post
    ->select()
    ->relatedWith($category)
    ->get();
//But the result is cached so the database query is executed only the first time
$posts = $category->post;

$titles = $db->post[34]->tag->post->title;
//Get the post id=34
//Get the tags of the post
//Then the posts related with these tags
//And finally, the titles of all these posts

$category = $db->category[34];
//Magic property: Returns all posts of this category:
$posts = $category->post;
//Magic method: Returns the query instead the result
$posts = $category->post()
    ->where('pubdate > ', date('Y-m-d'))
    ->limit(10)
    ->get();

//Get some posts
$posts = $db->post
    ->select()
    ->get();
//preload all categories
$posts->category;
//now you can iterate with the posts
foreach ($posts as $post) {
    echo $post->category;
}

//Get some posts
$posts = $db->post
    ->select()
    ->get();
//Select the categories but ordered alphabetically descendent
$categories = $posts->category()
    ->orderBy('name DESC')
    ->get();
//Save the result in the cache and link the categories with each post
$posts->link($categories);
//now you can iterate with the posts
foreach ($posts as $post) {
    echo $post->category;
}

//Get some posts
$posts = $db->post
    ->select()
    ->get();
//Select the post_tag relations
$tagRelations = $posts->post_tag()->get();
//And now the tags of these relations
$tags = $tagRelations->tag()
    ->orderBy('name DESC')
    ->get();
//Link the tags with posts using the relations
$posts->link($tags, $tagRelations);
//now you can iterate with the posts
foreach ($posts as $post) {
    echo $post->tag;
}

//Get a comment
$comment = $db->comment[5];
//Get a post
$post = $db->post[34];
//Relate
$post->relate($comment);
//Unrelate
$post->unrelate($comment);
//Unrelate all comments of the post
$post->unrelateAll($db->comment);

$query = $db->post->select()
    ->page(1)
    ->perPage(50);
$posts = $query->get();
//To get the page info:
$pagination = $query->getPageInfo();
echo $pagination['totalRows']; //125
echo $pagination['totalPages']; //3
echo $pagination['currentPage']; //1
echo $pagination['previousPage']; //NULL
echo $pagination['nextPage']; //2

php dev start
cli
php dev -m MyMiddleware