All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed dilimater of sql builder alter raname (#398).
- Fixed migration always run latest
batch
instead usingtake
option (#397).
- Fixed allowed
CacheManager::setDriver()
using closure (lazy load), register driver without initial driver (#395).
- Fixed lifecyle of
TestCase::class
, by adding methodcall
to prevent null property (kernel
orapplication
) (#394).
- Fixed
TestCase::class
allowed null property, fixed test assign null (kernel) (#393).
- Fixed deleting gitignore when run
Cache::clear()
using file storage (#391). - Fixed prevent rendering error in production (#389).
- Change or added default configuration for
CACHE_STORAGE
use bycache
facade andBCRYPT_ROUNDS
use byhash
facade (bcrypt hasher) (#392).
- Added
HandleExceptions::class
for handle php error (#368), prevent production report. - Added console write stream using
fwrite
(#369). - Added Password hash (3 method) (#370) and hash facade (#377).
- Added Cache (
ArrayStorage
,FileStorage
) andCacheManager
use (like) psr cache (#378). - Added
TemplatorDirective::class
to allow costume directive by user (#384). - Added
JsonTemplator::class
to convert php array to json data (#386).
- Changed
handler::class
using debug mode status, and added http response exception (#371). - Changed http request global
__get()
(useall()
instead ofsource()
) (#382). - Allowed Templator cache when geting content from file (#383).
- Fixed container alias no load (#365).
- Fixed Kernel test not load
bootstrap
, manualy callbootsrap
(#366).
- Added support
HTTP_AUTHORIZATION
header toRequestFactory::class
is available in$_SERVER
.
- Fixed Schdeule time in class
Schedule::schduler()
must equal withFacades\Schedule::class
time.
- Fiexed typo method name
CronCommand::getSchedule()
.
- Changed monorepo worker added
AddTagToChangelogReleaseWorker::class
, and removedTagVersionReleaseWorker::class
andPushTagReleaseWorker::class
to prevent insidental run tag and push to remote.
- Added monorepo-builder validate in composer test.
- Added
Schedule::setTime(int $time)
to reset time. - Added
CronCommand::getShedule()
to merge shcedule in class with Shedule facade with reset time.
- Changed ci work flows branch to master.
- Added
Schedule::add($schedule)
andSchedule::flush()
to add schedule time pools and flush the pool (shedule time). - Added
Schedule::class
facades. - Added
System\Integrate\Bootstrap\Register::class
to register facade base application. - Added
ConfigRepository::class
facades. - Added
Facade::flushInstance()
to flush/clear registerd instance. - Added
Application::isDebugMode()
and allowed detect application environment usingAPP_ENV
(equal withENVIRONMENT
). - Split package using github workflows. New 13 package will split Collection, Console, Container, Cron, Database, File, Http, Macroable, Router, Security, Support, Template, Text, Time, View.
- Allowed set
Facade::$app
without initially construction, usingFacade::setFacadeBase($app)
and setFacade::$app
to null. - Improved similarity in
Console\Karnel::class
usingjaroWinkler
algoritma.
- Changed how call static use
static
instead ofself
, purpose to make property can call only in parent class `ServiceProvider::modules(). - Changed typo method name from
Collection::dumb()
toCollection::dump()
.
- Added
ServiceProvider::exports()
to register files/folders needed in package. - Added
PackagaDiscoveryCommand::class
to find supported package has register by composer vendor. - Added
PackageManifest::class
to collect information what needed byServiceProvider
. - Added
ConfigRepository::class
to load all Application configure. - Added
Migration::VendorPaths()
to manually add costume path from vendor path (package manifest). - Added
Karnel::handle()
andKarnel::register
to run command directly. - Added
BootProviders::class
,ConfigProviders::class
andRegisterProviders::class
.
- Changed how Application load bootstrapper. Application now handle bootstrap manually.
- Changed
Karnel::call()
call command usingApplication::call()
. - Changed
Karnel::__constructor()
parameter toApplication::class
instead ofContainer::class
. - Changed load configure using
Util::loadCommandFromConfig()
, this propose to costume command register.
- Removed support for php 7.4 due the new feature
Container::alias()
make modify another Container method.
- Added
Container::alias
register alias for calling register entriesget
,make
,has
. - Added
Application::registerAlias()
register alias for default application alias (#316).
- Use
Container::flush()
to flush container and added termnited tobe flush. - Change or Added new Rector rule see #321 for more details (note bene php8.0 support).
- Fixed
Application::setViewPaths
addedbasePath()
as prefix path. - Fixed
Handler::handleHttpException()
path not found, overwrite Templator instnace to registerTemplatorFinder::class
.
- Deprecated snake case method name in
Application::class
(#318), we was changed to camel case but keep old method in trait helper callSystem\Integrate\Contracts\Paths
.
- Fixed
Handle::class
render http exception with paths not found. Added base view path, so finder can located layout / component.
- Fixed set view paths start with base path (#324 ref from #319).
- Changed mixed return type to php doc return type.
- Added
TemplateFider::class
finder location for template engine (find, get path).
- Changed
Templator::__construct()
usingTemplatorFinder::class
for handle find and get path.
- Fixed view template finder by hard code suffix and prefix view file, the next version will handle by
ViewFinder::class
.
- Application abort
Application::abort()
orabort()
shorthand for throwHttpException::class
. - Added
Handler::class
to catch exception inKarnel::class
. - Added response json exception handler in
Handler::class
. - Added
Handler::dont_report
to except no report. - Added
HttpResponse::class
to register response in exception. - Added
Templator::viewExist()
to check template file exist. - Added
handler::handleHttpException
to transform httpException to Response view.
Container::class
implements ArrayAccess.
- Added Templator multy section.
- Added Application Storage Path.
- Added Http Karnel terminate.
- Added Application Maintenace Mode.
- Rewrite
Model::class
mergeMyModel::class
andMyCRUD::class
, adding without deprecated/removing (yet). - Added
Collection::pluck()
pluck collection with key. - Added
MyPdo::logs
to get query logs and time execution.
- Change stub file for
Model::class
default usingModel::class
.
- Removed stub for
MyCrud::class
akaModel
andMyModel::class
akaModels
.
- Changed Tempaltor required dolar sign to declare variable (name, each, set and if).
- Changed migration command migrate table info type.
- Added Templator imoport directive.
- Added cron schedule skip when due time.
- Support Templator slot in inline directive.
- Added suport cli command prompt to accept yes using option
--yes
. - Added function to check param exist
Command::has
.
- Remove double dolar sign in variable
- Allowed templator each using key and value pairing.
- Integrate command using pattern command instead of class command.
- Run Migration command base on table migration (batch).
- Changed parent parameter in templator template,
$data
->$__
and$template
->$__file_name__
. - Separate templator to small part/class.
- Added seeder option after run migration command.
- Added
Collection::max
andCollection::min
. - Added
Style::outIf
print/echo when condition true. - Added costume tick cosole progressbar
ProgressBar::tickWith
.
- Fixed adding multy premerykey and unique in schema builder.
- Fixed when adding default constrait.
- Changed add
NULL
whenConstrait::notnull
parameter is false.
- Added second parameter optional wrap quote value in
Constrait::default
. - Added new default constrait
Constrait::defaultNull
shortcut for add default isNULL
. - Added Unsigned for integer data type in schema builder.
- Changed
App
property and useMyPDO
insted. - Changed native array map instead using
Collection::map
inStr::mask
. - Changed folder structur for
Macro
trait. - Chenged
Str::fill*
using nativestring_pad
. - Changed
ServeCommand::serve
named argument with option command--port
. - Changed how
Templator::getView
include php file (encapsulation).
- Added new Collection method
Collection::where
,Collection::whereIn
,Collection::whereNotIn
. - Added
Karnel::class
command similar when cant match any command. - Added
Url::parseRequest
to parse url usingRequest::class
. - Added
ServeCommand::serve
with new option--expose
. - Added
Templator::compile
get compiled templator file without run php file. - Added new command
ViewCommand::cache
andViewCommand::clear
. - Added new
Templator
syntax{% set foo='bar' %}
to set variable. - Added new
Templator
syntax{% raw %}{% endraw %}
to give raw template without compile any variable. - Added new
Templator
syntax{% break %}
and{% continue %}
.
- Fixed
HelpCommand
using commandmap to find command helper. - Fixed prevent error when
cmd
not found in commandmap.
- Added response status code
isInformational()
,isSuccessful()
,isRedirection()
,isClientError()
,isServerError()
. - Added response http protocol version.
- Added
Url::class
object value for url parse. - Added
Response::headers
property to modify headers as collection. - Added new command map structur
fn
(array),pattern
,match
anddefault
. - Added support Console Karnel to add default option using command map.
- Added
SeederCommand
to run seeder using costume namespace (--name-space).
- Added exit prompt confirmation function
exit_prompt()
. - Added
redirect()
andredirect_route()
to redirect asRedirecResponse::class
. - Added costume header class (collection) to handle/manage http header.
- Added support database schema builder with
character set
. - Added Integrate seeder (seeder command, seeder path, seeder abstract).
- Added test response assertation.
- Removed
MyCRUD::read()
limit causing no result when fetching database. - Change return type from
self
to$this
to make child can access chain from parent.
- Added method
Collection::push
to add item in collection without using key. - Added method
Collection::diff
,Collection::diffKeys
,Collection::diffAssoc
. - Added method
Collection::complement
,Collection::complementKeys
,Collection::complementAssoc
. - Added integrate command
CronCommand::class
,HelpCommand::class
,MakeCommand::class
,RouteCommand::class
,MiggrationCommand::class
. - Added console width via
Terminal::width
. - Added console method
Style::replace
, replace spesific line with new text. - Added terminal style
ProgressBar::class
print progressbar in console.
- Change return type to
bool|void
inColection::each(closure(): void|bool)
.
- Deprecated
new_lines
and added new methodnewLines
with same result.
- Change
RouteGroup::group
return same with 1st parameter callback return (return ) (#197).
- Added Request format type (#186).
- Added support
litespeed_finish_request
to send respone (#188). - Added database schema for raw queary
MySchema::raw()
(#189). - Added support
StreamedResponseCallable
to send stream to client (#192). - Added support
Route::resource
includeonly
,except
,map
andmisssing
(#195).
- Changed command parse support count alias, group value (array) (#190).
- Changed
Response::send
now flush after send buffer (#191).
- Added
Collection::reduse()
method. - Added
Str::after()
finder and get text after some text. - Added
public_path()
to get public path. - Added
Vite::class
to access vite manifest (FE). - Added
Style::rawReset()
,Style::resetDecorate()
to change style reset rule. - Added
Collection::firstKey()
,Collection::lastKey()
,Collection::firsts()
,Collection::lasts
andCollection::take
to get kay first and last in collection. - Added
Style::yield()
to print output and continue write style. - Added database alter table (modify database table) (#181).
- Added
Route::has()
to check route name exist or not.
- Make Schedule logging with interface schedule instead of creating custom class (extends).
- Refactor the http kernel to handle middleware in a way that allows for short-circuiting and early return of a response.
- Refactor console karnel, with new pipeline provide by library.
- Refactor
Collection::___clone()
cloning collection using deep cloning array.
- Added a new method called Request::duplicate, which allows for modification of an incoming request by creating a duplicate request object.
- Added new method
Response::getStatusCode
andResponse::getContent
to provide information usefull for testing or middleware during handle. - Added global function to find in array by using dot keys
data_get()
. - Added global function to render template as response
view()
. - Added a new method called Collection::assocBy(), which allows for modifying an item in an array with a new item that includes a new key.
- Added support encrypt decrypt plain text.
- Added new html/php template engine
Templator::class
. - Added support command prompt inputs.
- Generic type Collection.
- Update
ColorVariant
Colors Varian.
- Added
Now::class
formated standart date. - Added
ValidationCommandTrait::trait
, validation command input with display error in console. - Added
Appcliaction::migration_path
. - Added Command Prompt class to interact with console input
select
,option
,text
.
Now::class
support costume timezone.Command::option_maper
parse include minus sign-
in parameter key.Command:class
implement array access, get parse agrv using command.- Property
Command::name
change toCommand::_
.
- Added
\System\Database\MySchema\Create::class
,\System\Database\MySchema\Drop::class
,\System\Database\MySchema\Truncate::class
to crate/drop database or table. Or using shorthand 'MySchema::class`.
- Added
Query::queryBind()
method to return query string with the bind's. - Added support
Query::class
limit usingoffet
. - Added
Collection::shuffle()
,Collection::rand()
,Collection::current()
,Collection::next()
andCollection::prev()
.
- Fixed concat between join and where condition in query builder.
- Fixed return query bind boolean return as boolean.
- Allowed schadule logging event job execute has error (#90).
- Fixed query limit less that 0 (#91).
- Added
Request::macro
to upload file (#92). - Added support database insert multy raw (#98).
- Collection implements
Countable
,ArrayAccess
andIteratorAggregate
interface (#93) (#97). - Database query using Bind as Class
Bind::class
(#94).
- Changed
Request::all
with check content type. - Changed
Request
from json request, return only json body from content. - Changed
Requet::all
return base on method and return files (if avilable). Post Method return only post, and Get Method return only get. - Change
Str::class
usingMacro::trait
.
- Added
Request::isJson
determinate request from json request. - Added
Request::input()
return merge post and query request. - Added
Macro::trait
to add macro in class. - Added integrate Request-Validation (servise provider) macro.
- Added
Collection::ref
to add refrence (add collection in collection). - Added support cron job to
retry
andretryCondition()
. - Added
Now::shortDay
property.
- Removed
AbstractMiddleware::class
.
- Added support Request Iterator interface (loop class-object).
- Added
Request::getAttribute()
. - Added
Request::initialize()
.
- Added
Request::isAjax()
detect ajax request.
-
Removed
AbstracMiddleware::handle()
. -
Added
- Fix error when create from global to get content body #66.
- Added
Style::tap()
push style class. Request::class
implement ArrayAccess.Request::class
supported higher order expectations.- Added
Request::query()
,Request::post()
return collection $__GET, $__POST.
- Change method name
Request::allin()
toRequest::wrap()
. Request::__constructor
parameter not nullable.Request::rawBody()
return string|null.Request::getJsonBody()
throw exception when rawBody is not array/json and empty body.Request::all()
return body content if content length not equal zero or empty.
- Deprecated set header from content['header'] in
Respone::class
. - Deprecated set header from content['header'] in
View::render
. - Deprecated
Command::printHelp
.
- Added trait to print help option and argument using array.
- Added
Respone::__toString
to get respone content include http version, header, and content.
- Using kay-val array instead of header line array.
- Added laravel
dont-discover
package.
- Add composer branch alias for
dev-master
to0.x-dev
.
- Fixed default when route middleware group not found.
- Fixed use
apache_request_headers
when function is exists.
- Fixed support
Style::lenght
with integer parameter.
- Added
Style::textColor
andStyle::BgColor
with paramter asForegroundColor
orBackgroundColor
or string hex color. - Support color variant call directly uning magic call (eg
Style::text_blue_500
). - Added
Style::lenght()
count text lenght without count rule.
Style::raw
will add specific on textColor or bgColor.
- Added method
Colors::rgbText
,Colors::rgbBg
. - Added
Style::repeat
,Style::new_lines
andStyle::tabs
. - Added property to define terminal color
ForegroundColor::class
andBackgroundColor::class
.
- Updated php-cs-fixer to "3.9".
- Changed class from
Rule::class
toStyle::class
. Style::push()
return as self.- Change from 255 color to true color teminal
Colors::class
. - Changed method
Colors::RawHexText
toColors::hexText
,Colors::RawHexBg
toColors::hexBg
. - Push no longger print out before method
out
call. - Use
chr(27)
intead of "\e" for escape charakter.
- Added default argument for parse console argument in
Command::class
. - Added more terminal color pallet.
- Added reset parameter in method rule
CommandTrait::rule($rule, $text, $rest, $reset_rule)
. - Added feature to remove qoute (single or double) in parse console argument.
- Added console/terminal decoration with chainging way
System\Console\Style\Rule::class
;
- Changed deafault method to call from
Command::println
toCommand::main
. - Use
CommandTrait
inConsole::class
is optional.
- Rename NameSpace
System\Support\Facedes
toSystem\Support\Facades
. - Rename class from
Facede::class
toFacade::class
. - Changed
mb_string
instance of string function inStr::class
. - Changed doc block
MyCRUD::SetID()
return asstatic
instance ofself
.
- Added
Facade::class
abstract class. - Added
System\Support\Facades\DB::class
andSystem\Support\Facades\PDO::class
- Added
MyPDO::instance
. - Added
CrossJoin::class
query builder for join table query.
- PHPStan level 6 for
System\Database
excludeMyModel::class
.
- Remove
MyQuery::getInstance
.
- Added
Str::limit
for trucate text. - Added
FileMultyUpload::class
for handle multy files upload. - Added
UploadFile::class
support testUploadFile::markTest
with usecopy
instance ofmove_uploaded_file
. - Added
UploadFile::get
for get file content of uploaded file.
- Changed
UploadFile::folder_location
not provide$_SERVER['root']
. - Changed
UploadFile::Success
toUploadFile::success
. - Changed visibility
Time::class
to prevent ilegal changes property witch make property not sync.
- Folder location check
UploadFile::setFolderLocation
. - File extention check
UploadFile::validate
.
- File size check
UploadFile::validate
always passed.
- Added
Str::fill()
,Str::fillEnd()
andStr::mask()
. - Added
Text::fill()
,Text::fillEnd()
andText::mask()
.
- Fixed
MyCRUD::setter()
checkMyCRUD::RESISTANT
always true. - Fixed
MyCRUD::getLastInsertID()
cant set default id (if id is empty). - Fixed
MyPDO::transaction
returnMyPDO::beginTransaction
without run callable function.
- Changed
Str::class
to final class. - Changed
Select::class
to final class. - Changed
Application::class
to final class. - Changed
RouteDispatcher::class
to final class. - Changed
ServiceProvider::__construct()
param fromContainer::class
toApplication::class
. - Changed
View::render
throw exception when file not found.
MyModel::call()
, Unsafe usage ofnew static()
.MyPDO::$Instance
, Unsafe usage ofnew static()
.AbstractJoin::ref()
, Unsafe usage ofnew static()
.Controller::static()
, Unsafe usage ofnew static()
.Router::getRoutes()
, Call to an undefined methodSystem\Router\Route::route()
.
- Added
MyPDO::config()
PDO connection configure. - Added string manipulation
Str::chartAt
,Str::concat
,Str::indexOf
,Str::lastIndexOf
,Str::match
,Str::repalce
,Str::search
,Str::slice
,Str::split
,Str::toLowerCase
,Str::toUpperCase
,Str::firstUpper
,Str::firstUppeAll
,Str::toPascalCase
,Str::toCamelCase
,Str::contains
,Str::startsWith
,Str::endsWith
,Str::template
,Str::slug
,Str::repeat
,Str::length
,Str::isString
,Str::isEmpty
,Str::isMatch
. - Added string macro
System\Text\Str::macro
. - Added common regex
System\Text\Regex::class
. - Added string class for manipulation string
System\Text\Text::class
.
- Change composer require php version
7.4
and8.0
.
- New
MyPDO::__construct
params, using array contain database configuration. MyPDO::getInstance()
return single instance.- New
MyPDO::__construct
throwing error without calldie
function.
- Remove database defineder (
DB_NAME
,DB_HOST
,DB_USER
,DB_PASS
).
- Fixed
Route::group
can't combine middleware.
- Prevent duplicate middleware call.
- Added method (
Route::middleware
) to call middleware individualy.
- Change
Router::middleware
param form middleware object to middlewar class-name. RouterGroup::group
retrun as callback param.
- Added
RouteDispatcher::class
dispatch request route.
Router::class
run throwRouteDispatcher::class
.View::render
return asRespone::class
.respone->html()
,respone->json()
,respone->planText()
no longger send respone. Its just set content type.
- Added
flush()
method to reset application container. - Added global function
now()
instance ofSystem\Time\Now::class
. - Added function to load register service provider (in
Application::class
).
- Application container have default config by default.
- Added
ScheduleTime->interpolate()
to execute closure. Action after schadule execute. - Added DI container
Container::class
. - Added core framework
Appcliaction::class
, witch load DI and application configuration. - Added abstract
Karnel::class
andServiceProvider::class
. - Added global function Application.
- Added Collection->immutable class.
- Added Fetch->get() return as collection.
- Added uploadfile class.
- Added method close() to closed middleware.
- Add
Router::prefix()->group()
group router base on prefix. - Add
Router::name()->group()
group router base on name. - Add
Router::midleware()->group()
group router base on midleware. - Add
Router::controller()->group()
group router base on controller. - Add
Router::group(array, closure)
costume group. - Add
Router::current()
get current route. - Router group can be combine with other router group.
- Change
MyCrud
not implementCrudInterface
- Add
collection::class
methodsplit
,chunk
,only
,except
andflatten
- Add Parameter pool (
ConstPool
,PropertyPool
andMethodPool
) in methodGenerate->consts(); Generate->propertys(); Generate->Methods()
- Add feature command name (get option directly from object name)
Command:class
- Add
MyQuery->whereExits()
andMyQuery->whereNotExits()
- Add
MyModel->join()
join method - Add MyCRUD
RESISTANT
to prevent changes from some table column - Add MyCRUD
hasOne
andhasMany
- Add MyCRUD magic method
__get
and__set
MyQuery
query quality, remove extra white space
- MyQuery use
ConditionTrait
instead ofConditionInterface
- MyQuery join method using
AbstractJoin
parameter instead ofJoin
- Refactory
MyCRUD
MyCRUD
useMyQuery
for database connectionMyCRUD
change propertyID
toPRIMERY_KEY
andIDENTIFER
- Add feature to
generate::class
class, property, const and method as string - Add feature to collact array
Collection::class
andCollectionImmutable::class
- Remove
Router::view
- Add class to render view
View::class
Router::view
cant render using child controller class
- Add
Request::class
to handle http request - Add
Response::class
to handle http respone - Add
RequestFactory::class
to create request from global parameter Router::class
suport router name, route view (override), support HEAD request method- Route suport middleware
Router::middleware
- Rename class
RouterFactory::class
toRouteFactory::class
- Rename class
RouterProvider::class
toRouteProvider::class
- Project init