{"id":21524006,"url":"https://github.com/helloakn/zframework","last_synced_at":"2025-04-09T22:51:09.339Z","repository":{"id":62515703,"uuid":"434455366","full_name":"helloakn/zframework","owner":"helloakn","description":"My Own PHP Framework. Feel free to use.","archived":false,"fork":false,"pushed_at":"2022-04-02T07:30:40.000Z","size":44,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T00:41:30.943Z","etag":null,"topics":["mvc","my-own-php-framework","php-framework"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/helloakn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-03T03:34:59.000Z","updated_at":"2023-06-30T02:34:30.000Z","dependencies_parsed_at":"2022-11-02T10:17:37.571Z","dependency_job_id":null,"html_url":"https://github.com/helloakn/zframework","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloakn%2Fzframework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloakn%2Fzframework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloakn%2Fzframework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helloakn%2Fzframework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helloakn","download_url":"https://codeload.github.com/helloakn/zframework/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248125642,"owners_count":21051766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mvc","my-own-php-framework","php-framework"],"created_at":"2024-11-24T01:20:18.287Z","updated_at":"2025-04-09T22:51:09.315Z","avatar_url":"https://github.com/helloakn.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zframework \n[![Star Count](https://img.shields.io/badge/dynamic/json?color=brightgreen\u0026label=Star\u0026query=stargazers_count\u0026url=https%3A%2F%2Fapi.github.com%2Frepos%2Fhelloakn%2Fzframework)](https://github.com/helloakn/zframework) [![Licence](https://img.shields.io/badge/dynamic/json?color=informational\u0026label=LICENCE\u0026query=license.name\u0026url=https%3A%2F%2Fapi.github.com%2Frepos%2Fhelloakn%2Fzframework)](https://github.com/helloakn/zframework) [![Language](https://img.shields.io/badge/dynamic/json?color=blueviolet\u0026label=Language\u0026query=language\u0026url=https%3A%2F%2Fapi.github.com%2Frepos%2Fhelloakn%2Fzframework)](https://github.com/helloakn/zframework)\n\n## Create Project\n```\nphp zframework/zote init \n```\nAfter init prject, file structure will be\n```\n [dir] zframework\n    []...\n [dir] project\n    [file] .env\n    [dir] public\n        [file] index.php\n        [file] .htaccess\n        [file] robots.txt\n    [dir] mobile\n        [file] User.php\n    [dir] migration\n        [file] createUser.php\n    [dir] controller\n        [file] userController.php\n    [file] route.php\n```\n\n- - -\n\n## Route\n *  without controller\n *  with controller\n *  route prefix\n *  route Authorization {with guard}\n### Route Example\n *  Route : without controller\n```php\n \u003c?php\n/* route without controller*/\n$route-\u003eaddroute('post','/','',function(){\n    echo \"hello\";\n});\n$route-\u003eaddroute('post','/direct','',function(){\n    echo \"hello direct\";\n});\n?\u003e\n```\n *   Route : controller\n```php\n \u003c?php\n/* \nroute with controller and function\ncontroller : UserController\nfunction : testFun\n*/\n$route-\u003eaddroute('get','/test','UserController','testFun');\n?\u003e\n```\n\n *   Route : Prefix\n```php\n\u003c?php\n/* \nroute prefix\n*/\n$route-\u003eroutePrefix(\"/demo\",function($route){\n    /* /demo/d1 */\n    $route-\u003eaddroute('get','/d1','DemoController','d1Fun');\n    /* /demo/d2 */\n    $route-\u003eaddroute('get','/d2','DemoController','d2Fun');\n\n    //nested route prefix\n    $route-\u003eroutePrefix(\"/dx\",function($route){\n         /* /demo/dx/dx1 */\n        $route-\u003eaddroute('get','/dx1','DemoController','dx1Fun');\n    });\n    $route-\u003eroutePrefix(\"/dy\",function($route){\n        /* /demo/dy/dy1 */\n        $route-\u003eaddroute('get','/dy1','DemoController','dy1Fun');\n    });\n});\n?\u003e\n```\n- - -\n## Model\n *  Create Model\n *  Insert\n *  Update\n *  Delete\n *  Select , Where , Group , Order\n\n### Model Example\n\n *  Create Model\n\n```php\n\u003c?php\nnamespace Model;\nuse zFramework\\Schema\\Table;\n\nclass Item extends Table{\n    public static $tableName=\"Item\";\n\n    protected static $columnName=['itemId',\"name\"];\n\n    protected static $primaryKeys = ['itemId'];\n\n    protected static $autoIncreaseKeys = ['itemId'];\n\n    protected static $hiddenColumns = [];\n\n    protected $softDelete = false;\n\n    function __construct() {\n        parent::__construct();\n    }\n    \n\n}\n?\u003e\n```\n *  Insert\n\n```php\n \u003c?php\nnamespace Controller;\nuse zFramework\\providers\\Request;\nuse Model\\Item;\nclass ItemController{\n\n    public function insertFun(Request $request){\n        $item = new Item();\n        $item-\u003eitemId = $request-\u003eget('id');\n        $item-\u003ename = \"Item One\";\n        $item-\u003esave();\n    }\n}\n?\u003e\n```\n *  Update\n\n```php\n \u003c?php\nnamespace Controller;\nuse zFramework\\providers\\Request;\nuse Model\\Item;\nclass ItemController{\n\n    public function updateFun(Request $request){\n        /*\n        you can update in two ways\n        */\n        /* first way */\n        $item = Item::find($request-\u003eget('id'));\n        $item-\u003ename = \"ok\";\n        $item-\u003eupdate();\n        /* OR */\n        /* second way */\n        $item = new Item();\n        $item-\u003eitemId = $request-\u003eget('id');\n        $item-\u003ename = \"Item One\";\n        $item-\u003eupdate();\n        return $item;\n    }\n}\n?\u003e\n```\n *  Select , Where , Group , Order\n\n```php\n \u003c?php\nnamespace Controller;\nuse zFramework\\providers\\Request;\nuse Model\\Item;\nclass ItemController{\n\n    public function selectFun(Request $request){\n        $item = Item::select(\"id\",'name')-\u003eget();\n        //where\n        $item = Item::select(\"id\",'name')-\u003ewhere(\"id in (1,2)\")-\u003eget();\n        //order by\n        $item = Item::select(\"id\",'name')-\u003ewhere(\"id in (1,2)\")-\u003eorderBy(\"id desc\")-\u003eget();\n        //group by\n        $item = Item::select(\"SUM(qty) as quantity\",'name')-\u003ewhere(\"id in (1,2,3,4)\")-\u003eorderBy(\"name desc\")-\u003egroupBy(\"name\")-\u003eget();\n\n        //getAll\n        $users = User::select(\"id\",\"name\")-\u003egetAll();\n        foreach($users as $user){\n            echo \"name : \". $user['name'] .'\u003cbr\u003e';\n        }\n\n        //paginate\n        $users = User::select(\"id\",\"name\")\n                    -\u003epaginate($page_at-1,$row_count);\n        \n\n            $data = array(\n                \"code\" =\u003e 200,\n                \"status\" =\u003e \"success\",\n                \"message\" =\u003e \"success\",\n                \"pagination\" =\u003e $users-\u003epaginate,\n                \"data\" =\u003e $users-\u003edata\n            );\n            return $data;\n\n    }\n}\n?\u003e\n```\n - - -\n\n## Validation\n *  rule\n *  single file and multi files validation rule\n\n### Validation Example\n *  rule\n\n```php\n \u003c?php\nnamespace Controller;\nuse zFramework\\providers\\Request;\nuse zFramework\\providers\\Validator;\nclass ItemController{\n\n public function validationFun(Request $request){\n        $validator = Validator::Rule(function($validator){\n            $validator-\u003efield(\"name\")-\u003emax(4,\"the name should be under 200 length\");\n            $validator-\u003efield(\"name\")-\u003emin(2);\n            $validator-\u003efield(\"address\")-\u003emin(5)-\u003enotNull();\n            //custom validation rule\n            $validator-\u003efield(\"address\")-\u003ecustom(function($validator) use ( $request){\n                if($request-\u003eget('address')!=\"Sanchaung\"){\n                    $validator-\u003esetError(\"Custom validation erro\");\n                }\n            });\n        });\n\n        $v = $validator-\u003evalidate();\n\n        if(!$v){\n            $data = array(\n                \"status_code\" =\u003e 400,\n                \"status\" =\u003e \"failed\",\n                \"validate\"=\u003e$v,\n                \"errors\" =\u003e $validator-\u003eerror()\n            );\n            return $data;\n        }\n    }\n}\n?\u003e\n```\n\n\n\n *  single file and multi files validation rule\n\n```php\n \u003c?php\nnamespace Controller;\nuse zFramework\\providers\\Request;\nuse zFramework\\providers\\Validator;\nclass ItemController{\n\n public function validationFun(Request $request){\n       $validator = Validator::Rule(function($validator){\n            //single files\n            $validator-\u003efile(\"profile_image\")\n                -\u003eextenstions(\"jpg\",\"png\")\n                -\u003eminetype(\"image/jpeg\",\"image/png\");\n\n            //multi files\n            $validator-\u003efiles(\"image\")\n                -\u003eextenstions(\"jpg\",\"png\")\n                -\u003eminetype(\"image/jpeg\",\"image/png\");\n        });\n\n        $v = $validator-\u003evalidate();\n\n        if(!$v){\n            $data = array(\n                \"status_code\" =\u003e 400,\n                \"status\" =\u003e \"failed\",\n                \"validate\"=\u003e$v,\n                \"errors\" =\u003e $validator-\u003eerror()\n            );\n            return $data;\n        }\n    }\n}\n?\u003e\n```\n\n - - -\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloakn%2Fzframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelloakn%2Fzframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloakn%2Fzframework/lists"}