2017 © Pedro Pelรกez
 

library framework

Strukt Framework

image

strukt/framework

Strukt Framework

  • Friday, June 29, 2018
  • by pitsolu
  • Repository
  • 1 Watchers
  • 0 Stars
  • 166 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 13 % Grown

The README.md

Strukt Framework

Build Status Latest Stable Version Total Downloads Latest Unstable Version License, (*1)

The is the package that unifies all strukt-strukt components under the framework., (*2)

Rarely should anyone use this on its own., (*3)

Getting started

echo {"minimum-stability":"dev"} > composer.json
composer require "strukt/framework:1.1.7-alpha" --prefer-dist

Setup, Cache, Configuration & Environment

Cache

Always remember to clear and reload the cache when necessary, (*4)

./xcli cache:clear 
./xcli cache:make cli
./xcli cache:make idx

Shell

Drop into shell, (*5)

./xcli shell:exec

Setting Application Type

config("app.type", "App:Idx")// for index.php, alternative App:Cli for console

Configuration

config("facet.middlewares")
config("facet.providers")

Environment Setup

This class is defaultly found in strukt-commons, (*6)

Strukt\Env::withFile();//default .env file in your root folder
Strukt\Env::withFile(".env-dev");
env("root_dir", getcwd());//setter custom environment variable
env("root_dir");//getter

Setup Packages Registry

File location ./cfg/repo.ini, (*7)

repos(); //list all repositories
repos("published");//list all published strukt packages
repos("installed");//list all installed strukt packages

Packages

Default Package

package("core", "App:Idx")->get("settings"); //returns array of middlewares, commands and providers
//below mode:App:Cli is default
package("core")->get("name");//core
package("core")->get("cmd:name");//null
package("core")->get("files");//null
package("core")->get("modules");//null
package("core")->get("is:published");//true by default
package("core")->get("requirements");//null or array

The above methods are in abstract class Strukt\Package\Pkg you can use them to create your package., (*8)

Building Packages

Your first step in developing your package will require you to install strukt-framework and execute composer exec strukt-cfg command that will create your folder structure. You'll need to create src and package folders., (*9)

See structure of package below., (*10)

โ”œโ”€โ”€ bootstrap.php
โ”œโ”€โ”€ cfg
โ”œโ”€โ”€ console
โ”œโ”€โ”€ index.php
โ”œโ”€โ”€ lib
โ”œโ”€โ”€ tpl
โ”œโ”€โ”€ vendor
โ”œโ”€โ”€ composer.json
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ package #Place all your packages files here
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ src
    โ””โ”€โ”€ Strukt
        โ””โ”€โ”€ Package
            โ””โ”€โ”€ Pkg{{Package Name}}.php #Identify your package resources here

Your package class in src/Strukt/Package/Pkg<Package Name>.php will have methods listed in the Default Package section that is it should implement the interface Strukt\Contract\Package, (*11)

Package Autoloading

You may require to autoload libraries both from your root directory and package resources., (*12)

$loader = require "vendor/autoload.php";
...
...
$loader->addPsr4("App\\", [

    __DIR__."/lib/App",
    __DIR__."/package/lib/App"
]);

return $loader;

Note

For packages that require installation into your app/src/{{AppName}} folder, there are a few tricks you could use while building your package. The publish:package command takes argument package for publishing packages that are currently in development, since your source will be in the root folder in a subfolder called package., (*13)

This will require you to enter into your cfg/repo.php (See Setup Packages Registry) and indicate your currently in-development package with the key/keyword package which will allow the publisher to install files in the your app source folder app/src., (*14)

Validator

Example

class User extends \Strukt\Contract\Form{

    /**
    * @IsNotEmpty()
    * @IsAlpha()
    */
    public string $username;

    /**
    * @IsNotEmpty()
    */
    public string $password;
}

Validator Annotations

/**
* @IsNotEmpty()
* @IsAlpha()
* @IsAlphaNum()
* @IsNumeric()
* @IsEmail()
* @IsDate(Y-m-d)
* @IsIn(a,b,c)
* @EqualTo(xyz)
* @IsLen(10)
*/

Adding Validators

New validators can be added is in your lib/App/Validator.php There you can find an example App\Validator::isLenGt, (*15)

/**
* @IsLenGt(10)
*/

The Versions