1. Go to this page and download the library: Download attokit/attobox 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/ */
# ./route/Web.php
namespace Atto\Box\route;
class Web extends Base
{
/**
* this will define a controller named index
* @param Array $args URI array
* if request url == https://your.domain/index/foo/bar
* then $args = ["foo", "bar"]
*/
public function index(...$args)
{
$rtn = [
"hello" => "world"
];
//default response type is html
return "string"; //echo "string"
return $rtn; //echo "{'hello': 'world'}"
//you can assign response type by using query string
//...?format=json
return "string"; //{error:false, errors:[], data:'string'}
return $rtn; //{error:false, errors:[], data: {hello: 'world'}}
//or
Response::json($rtn);
//...?format=dump
return $rtn; //var_dump($rtn)
//or
Response::dump($rtn);
//...?format=str
return $rtn; //echo "{hello:'world'}"
//or
Response::str($rtn);
/**
* !!! Use return method
* !!! Response::[method] is NOT Recommand
*/
//you can response a PHP page like using view
//page file recommand in /page, but you can put it anywhere
$page = path_find("page/someView.php");
Response::page($page, [
//you can access these params in view page
"rtn" => $rtn,
//...
]);
//you can response a code
Response::code(500);
//other response usage such as headers,
//you can check the Response Class in
// vendor/attokit/attobox/src/Response.php
}
}
# ./app/appname/Appname.php
namespace Atto\Box\App;
use Atto\Box\App;
class Appname extends App
{
//default route(controller)
//https://your.domain/appname
public function defaultRoute(...$args)
{
return "appname/indexController";
}
//custom route(controller)
//https://your.domain/appname/foobar
public function foobar(...$args)
{
return "appname/customController";
}
}
# ./record/usr/Usr.php
namespace Atto\Box\record;
use Atto\Box\Record;
use Atto\Box\RecordSet;
use Atto\Box\Counter;
class Usr extends Record
{
//generator method for auto increment ids
//this method only triggered before insert
public function __generateUid()
{
//create uid
//use Counter in vendor/attokit/attobox/src/modules/Counter
$uidx = Counter::auto("usr_usr_uid");
$uidx = str_pad($uidx, 4, "0", STR_PAD_LEFT);
$uid = "U".$uidx;
return $uid;
}
//automatically process before/after insert/update/delete
protected function beforeInsert() {return $this;}
protected function afterInsert($result) {return $this;}
protected function beforeUpdate() {return $this;}
protected function afterUpdate($result) {return $this;}
}
class UsrSet extends RecordSet
{
//custom methods
public function disabled()
{
//disabled all usrs in usrset
$this->setField("enable", 0);
$this->save();
return $this;
}
}
use Atto\Box\route\Base;
use Atto\Box\Db;
use Atto\Box\db\Table;
use Atto\Box\record\Usr;
class SomeRoute extends Base
{
//method
public function dbtest()
{
$usrdb = Db::load("sqlite:usr");
$usrtb = $usrdb->table("usr");
//or
$usrtb = Table::load("usr/usr");
//get recordset
$usrs = $usrtb->whereEnable(1)->whereName("~","jack")->limit(10)->select();
//or
$usrs = $usrtb->query->apply([
"where" => [
"enable" => 1,
"name[~]" => "jack", //LIKE '%jack%'
],
"limit" => 10
])->select();
//get record
$usr = $usrtb->whereUid("123")->single();
//read record field value as property
$uname = $usr->context["name"];
//or
$uname = $usr->name;
$unames = $usrset->name; //[uname, uname, ...]
$extra = $usr->extra; //json to array
//iterate recordset
for ($i=0;$i<count($usrs);$i++) {
//...
}
//or
$rst = [];
$usrs->each(function($usr) use (&$rst){
//...
});
//export record object to associate array
$usrinfo = $usr->export(
"show", //export type: ctx, db, form, show, table
true, //auto calc virtual field, defined in config.json
true, //auto query related table record, defined in config.json
);
//edit record
$usr->setField("fieldname", "value");
$usr->save();
//edit recordset multiple edit records
$usrs->setField([
"field1" => "val1",
"field2" => "val2",
"field3" => [
"jsonkey" => "jsonval"
]
], true); //if contains json field, need be true
$usrs->save();
//insert new record
$newusr = $usrtb->new([
//init record data
]);
$newusr->setField([
//record data
]);
$newusr->save();
//delete, will automatically trigger before/afterDelete()
$newusr->del();
}
}
index.php
index.php
start.php
/route/Web.php
Appname.php
/app/appname/Appname.php
Web.php
Dbm.php
Src.php
Uac.php
[/app/appname]/record/dbname/Tablename.php
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.