PHP code example of arefshojaei / lite-php

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

    

arefshojaei / lite-php example snippets


# Before
once "../console/commands/package/_main.php";

# After + without using '.php' ext
import("@modules/user/_controller")
import("@commands/package/_main")

createAlias([
   # Guide
   "@<alias>" => dirname(__DIR__) . "path",

   # Example
    "@core" => dirname(__DIR__) . "/core",
    "@modules" => dirname(__DIR__) . "/modules",
    ...
]);

import("@core/modules/config/createConfig");

createConfig("name", [
    "key" => "value"
]);

import("@core/hooks/useConfig");


# Usage
useConfig("name.key");

import("@core/modules/enum/createEnum");

createEnum("name", [
    "KEY" => "value"
]);

import("@core/hooks/useEnum");


# Usage
useEnum("name::KEY");

import("@core/modules/plugin/createPlugin");

# Usage
createPlugin("name", function ($params) {}, false);

"plugins" => [
    # Usage
    registerPlugin("name"),
    
    
    # Examples
    registerPlugin("logger", ["level" => "short"]),
    registerPlugin("security"),
    registerPlugin("cors"),
],

import("@core/modules/plugin/createPlugin");

# Usage
createPlugin("name", function () {});

import("@core/hooks/usePlugin");


# Usage
list(...) = usePlugin("name");

import("@core/modules/validator/createValidator");

createValidator("post", [
    "id" => [
        "type" => "int",
        "

import("@core/hooks/useValidator");


# Usage
$schema = "post",

$post = [
    "id" => 1,
    "title" => "Thanks for using the Micro Framework.",
];

$isValid = useValidator($schema, $post);

 foreach ($users as $user): 

import("@modules/user/_controller")


$user = getUser();

print_r($user);

# Usage
import("@core/helpers/route");


# Single Route
addRoute("GET", "/user", "showUser"); # /user


# Group Route
groupRoute("/page", function() {
    addRoute("GET", "/", "__app__index"); # /page/home
    addRoute("GET", "/users", "__user__index"); # /page/users
    addRoute("GET", "/courses", "__course__index"); # /page/courses
});

$user = [
    "id" => 1,
    "name" => "Robert",
    "skills" => ["PHP", ...]
];

# Usage
dd($user); # to dump and die

dd($user, false); # just to dump and no die process

import("@core/helpers/parse");

$file = "links.txt";

# Usage
$links = prase($file);
$links = @prase($file); # use the @ to get boolean or content if you don't want to get error

forach ($links as $link) {
    echo "[Link] {$link}" . PHP_EOL;
}

import("@core/helpers/view");

# Example 1
view("welcome");

# Example 2
$user = [
    "id" => 267
    "title" => "User Page",
    "name" => "Robert",
]

view("user", $user);

# Usage
import("@core/helpers/command");


# Single Command
addCommand("database", fn() => "Hi from Lite PHP", "Database status"); # php cli database


# Group Command
groupCommand("fake:", function() {
    addCommand("city", "action", "description"); # php cli fake:city
    addCommand("company", "action", "description"); # php cli fake:company
    addCommand("user", "action", "description"); # php cli fake:user
    addCommand("book", "action", "description"); # php cli fake:book
});

# Usage
import("@core/helpers/test");


# Definition
describe('test-info', function() {
    it("test-description", function() {
        # use Asserts ...
        # Read "core/helpers/assertion.php" to use in this logic code !
    });
});


# Usage

    # Test All Modules 
    php cli test
    
    # Test Single Module 
    php cli test [module-name]

import("@core/helpers/abort");


# Usage
function bootstrap() {
    abort(500, "Internal Server Error", ["package" => "LITE PHP"]);
}

import("@core/helpers/build");

# Guide
buildURL("/products"); # [pre defined => (host:port)] + route


buildPath("/resources", "/lang/en/public"); # base path + path + file ext

import("@core/helpers/translate");

# Text: Welcome message
"Translated: " . __("welcome");  # پیام خوش آمد گویی

# Text: Thanks :name for using :product
"Translated: " . __("introduce", [
    "name" => "رابرت", 
    "product" => "This package"
    ]);  # ممنون رابرت برای استفاده کردن از این پکیج


import("@core/helpers/url");


# Get base URL
baseURL(); # Http://localhost:5000

# Get current route
url(); # /product/257

# Get current url
origin(); # Http://localhost:5000/product/257

# Build pointer Route to redirect to another route 
toRoute("/users"); # Http://localhost:5000/users

import("@core/helpers/assets");

# Get asset path
asset("/css/grid.css"); # resources/assets/css/grid.css

# CSS asset path
asset("/css/grid.css"); # resources/assets/css/grid.css
css("grid"); # resources/assets/css/grid.css

# JS asset path
asset("/js/state.js"); # resources/assets/js/state.js
js("state"); # resources/assets/js/state.js

# Image asset path
img("user.jpeg"); # resources/assets/img/user.jpeg

# Icon asset path
icon("logo.svg"); # resources/assets/img/logo.svg

import("@core/helpers/validator");

# Email validation
$email_1 = "[email protected]";
$email_2 = "[email protected]";

isEmail($email_1); # true
isEmail($email_2); # false


# URL validation
$url_1 = "http://localhost:5000";
$url_2 = "/categories/mobile/54673124";

isURL($url_1); # true
isURL($url_2); # false

import("@core/helpers/asserts");


assertTrue(""); # false
assertTrue("This is a message"); # true
assertTrue(0); # false
assertTrue(1); # true


assertEmpty([]) # true
assertEmpty([1,2,3]) # false

# and more assert functions....

import("@core/hooks/useHTTP");


function inspectRequest() {
    $method = useHTTP("REQUEST_METHOD");

    echo $method; # GET, POST, PUT, PATCH, DELETE
}

import("@core/hooks/useGET");


function inspectRequest() {
    $username = useGET("username");
    $password = useGET("password");


    dd([
        "username" => $username,
        "password" => $password
    ]);
}

import("@core/hooks/usePOST");


function inspectRequest() {
    $token = usePOST("token");

    echo $token;
}

# Send GET Request
import("@core/hooks/useFetch");

$response = useFetch("http://domain.com/end-point");


dd($response);

# Send POST Request
import("@core/hooks/useFetch");


$params = [
    "method" => "POST",
    "body" => [],
    "headers" => [],
];

$response = useFetch("http://domain.com/end-point", $params);


dd($response);

# Send PUT Request
import("@core/hooks/useFetch");


$params = [
    "method" => "PUT",
    "body" => [],
    "headers" => [],
];

$response = useFetch("http://domain.com/end-point", $params);


dd($response);

# Send PATCH Request
import("@core/hooks/useFetch");


$params = [
    "method" => "PATCH",
    "body" => [],
    "headers" => [],
];

$response = useFetch("http://domain.com/end-point", $params);


dd($response);

# Send DELETE Request
import("@core/hooks/useFetch");


$params = [
    "method" => "DELETE",
    "body" => [],
    "headers" => [],
];

$response = useFetch("http://domain.com/end-point", $params);


dd($response);

import("@core/hooks/useID");


function createUser($name, $email, $passowrd) {
    $id = useID();

    # logic code ...
}

import("@core/hooks/useConfig");


function createUser($name, $email, $passowrd) {
    $applicationName = useConfig("app.name");

    # logic code ...
}

import("@core/hooks/useEnum");


function createUser($name, $email, $passowrd) {
    # User SQL Table
    $userTable = useEnum("User::TABLE");
    
    # HTTP Statuses
    $HTTP_200 = useEnum("HTTP::OK");
    $HTTP_201 = useEnum("HTTP::SUCCESS");
    $HTTP_400 = useEnum("HTTP::BAD");
    
    # logic code ...
}

import("@core/hooks/useState");


function createUser($id, $name, $email, $password) {
    $user = [
        "email" => $email,
        "password" => $password
    ];


    # First way => key & value
    useState("users", $user);
    
    # Second way => nested keys & value
    useState("users.{$name}", $user);
    
    # Third way => nested keys & value
    useState("users.{$id}.{$name}", $user);


    # logic code ...
}

import("@core/hooks/useGlobal");


function getPlugins() {
    # First way => without nested key
    $plugins = useGlobal("plugins"); # $GLOBALS['container']['plugins']
    
    # Second way => with nested keys
    $runnerPlugins = useGlobal("plugins.runner"); # $GLOBALS['container']['plugins']['runner']
    
    $usagePlugins = useGlobal("plugins.usage"); # $GLOBALS['container']['plugins']['usage']


    # logic code ...
}

import("@core/hooks/useHash");


function createUser($name, $email, $passowrd) {
    $hashedPassword = useHash($password);

    # logic code ...
}

import("@core/hooks/useVerifyPassword");


function checkPassword($password,  $hashedPassowrd) {
    $isValidPassword = useVerifyPassword($password, $hashedPassword);

    # logic code ...
}

import("@core/hooks/useHTML");


function getSiteHtmlContent($url) {
    $html = useHTML($url);

    # logic code ...
}

import("@core/hooks/useMode");


function getApplicationModeStatus() {
    $mode = useMode(); # Production | Development

    # logic code ...
}

import("@core/hooks/useEnv");


function createDatabaseConnection() {
    $db = useEnv("DATABASE_DB");
    $host = useEnv("DATABASE_HOST");
    $username = useEnv("DATABASE_USER");
    $password = useEnv("DATABASE_PASS");

    # logic code ...
}

import("@core/hooks/useLog");


function showDashboardPage() {
    useLog("Admin Logged in!");

    # logic code ...
}

import("@core/hooks/usePlugin");


function getShortLink($longURL) {
    [...] = usePlugin("shortLink");

    # logic code ...
}

import("@core/hooks/useQuery");


function createUser($name, $email, $passowrd) {
    useQuery("INSERT INTO `users` (name, email, password) VALUES (?, ?, ?)", [$name, $email, $passowrd]);
    
    # logic code ...
}

function doLogin($email, $passowrd) {
    $user = useQuery("SELECT * FROM `users` WHERE email = ?", [$email]);

    dd($user);
    # logic code ...
}

import("@core/hooks/useResponse");


function showLoginPage() {
    $form = "
        <form action='' method='POST'>
            <input type='email' name='email' />
            <input type='password' name='password' />
            <button type='submit'>Login</button>
        </form>
    ";
    
    return useResponse("html", $form);
}

import("@core/hooks/useRequest");


function inspectRequest() {
    $host = useRequest("host"); # site.com
    $ip = useRequest("ip"); # 192.168.1.1
    $method = useRequest("method"); # GET | POST | PUT | PATCH | DELETE
    $protocol = useRequest("protocol"); # HTTP | HTTPS
    $query = useRequest("query"); # LIKE /product/?category='mobile'&limit=10
    $route = useRequest("route"); # /products
    $routeParams = useRequest("params"); # /product/{id} => ["id" => 171]
    $userAgent = useRequest("userAgent"); # ...


    # logic code ...
}

import("@core/hooks/useRedirect");


function inspectRequest() {
    $isValidUser = true;

    if($isValidUser) {
        useRedirect("/dashboard");
    }

    # logic code ...
}

import("@core/hooks/useURL");


function inspectRequest() {
    $parsedURL = useURL("http://localhost:5000/api/v1/products/?limit=25");

    dd($parsedURL);
    # logic code ...
}

import("@core/hooks/useBody");


function inspectRequest() {
    $token = useBody("token");

    # logic code ...
}

import("@core/hooks/useHeader");


function inspectRequest() {
    $fakeUserAgent = "...";

    # add
    useHeader("HTTP_USER_AGENT", $fakeUserAgent);
    
    # remove
    useHeader("X-Powered-By");


    # logic code ...
}

import("@core/hooks/useMatch");


function isValidEmail($email) {
    $regexPattern = "/^\[email protected]$/";

    $result = useMatch($regexPattern, $email);

    dd($result);

    # logic code ...
}

import("@core/hooks/useFlash");


function doLogin() {
    useFlash("login", "Invalid Email or Password!");
    
    # logic code ...
}

import("@core/hooks/useFile");


function addProfile() {
    $profile = useFile("profile");

    # logic code ...
}

import("@core/hooks/useFile");
import("@core/hooks/useUpload");


function uploadProfile() {
    $profile = useFile("profile");

    $result = useUpload($profile);

    # logic code ...
}

import("@core/hooks/useCache");


# Cache Data
function cachePostsData() {
    $posts = [...];

    useCache("posts", $posts);
    # logic code ...
}

# Get cached data
function getCachedPostsData() {
    $posts = useCache("posts");
    
    # logic code ...
}

import("@core/hooks/useCookie");


# Set cookie
useCookie("darkMode", true);

# Get the cookie
$darkModeState = useCookie("darkMode"); # true

# Set cookie params
useCookie("darkMode", rand(), [
    "expireTime" => "",
    "path" => "",
    "domain" => "",
    "secure" => "",
    "httpOnly" => ""
]);

import("@core/hooks/useSession");


# Set session
useSession("isLoggedIn", true);

# Get the session
$loginState = useSession("isLoggedIn"); # true

# Get list of all sessions
$sessions = useSession();

import("@core/hooks/useToken");


function doLogin() {
    $user = [
        "username" => "Robert",
        "password" => 12345
    ];


    $token = useToken($user, "secretKey");


    # logic code ...
}

import("@core/hooks/useVerifyToken");


function exportLogs() {
    $token = "...";

    $isValidUser = useVerifyToken($token,"secretKey");


    # logic code ...
}

import("@core/hooks/useValidator");


function validatePost() {
    $schema = "post";

    $post = [
        "id" => 1,
        "title" => "What is LITE PHP?",
        "body" => "Micro PHP Freamework!"
    ];

    $isValid = useValidator($schema, $post);

    # logic code ...
}

import("@core/hooks/useAction");


function addTodo() {
    useAction("ADD_TODO");

    $todo = [
        "id" => rand(),
        "title" => "Done login page",
        "timestamp" => time()
    ];
    
    # logic code ...
}

import("@core/hooks/useRecord");


function addTodo() {
    $todo = [
        "id" => rand(),
        "timestamp" => time()
    ];

    useRecord("todos", $todo["title"], $todo["timestamp"]);

    # logic code ...
}

import("@core/hooks/useTable");


function getTimestamp() {
    $result = useTable('actions', 'NEW_TASK');

    # Logic code ...
}

import("@core/hooks/useTable");


function deleteAction() {
    $result = useTable('actions', 'NEW_TASK', $action = TABLE_DELETE_ACTION);

    # Logic code ...
}
bash
composer create-project arefshojaei/lite-php
bash
|- bootstrap/
|
|- console/
|
|- core/
|
|- hooks/
|
|- modules/
|
|- plugins/
|
|- public/
|
|- resources/
|
|- storage/
|
|
|- .env.example
|- .gitignore
|- .htaccess
|- cli
|- composer.json
|- gulpfile.mjs
|- init
|- package.json
|- README.md
|- robots.txt
|- server.php
hbs
@foreach ($users as $user)
    <div class="user-card">
        <span>ID: {{ $user['id'] }} </span>
        <h3>Name: {{ $user['name'] }} </h3>
        <p>CV: {{ $user['cv'] }} </p>
    </div>
@endforeach
hbs
{{!-- Example-1 --}}
@style
* {
    box-sizing: border-box;
    color : #e5e5e5;
}
@endStyle

@linkStyle("https://domain.com/bootstrap/styles/grid.min.css")


{{!-- Example-2 --}}
@script
    const username = promt('Enter your userName:')

    alert(username)
@endscript


@linkScript("https://domain.com/jquery/jquery.min.css")


{{!-- Example-3 --}}
@php
    $message = "Welcome to Lite PHP"

    echo $message;
@endphp


{{!-- Example-4 --}}
@dump($message, true, [])

@dd([1,2,3,4,5])