Releases: vortexphp/framework
Releases · vortexphp/framework
v0.2.0: Release 0.2.0
Added
php vortex doctor— whenconfig/files.phpexists, checks each upload profile’sdirectory: exists underpublic/, writable, create/delete probe.FilesConfigUploadRootsparses the config shape.Log::setBasePath()at bootstrap;Log::info,warning,error,debug,notice,critical,alert,emergency,log($level, …)with optional JSON$context; samestorage/logs/app.logas exceptions.Cookievalue object (Set-CookieviaResponse::cookie()orCookie::queue()+Cookie::flushQueued()inKernel/Application::run()),Request::cookie()/cookies(),Cookie::parseRequestHeader()(quoted values,SameSitehelper shared withSession).Files\Storagefaçade:disk($name)returnsFilesystemdrivers fromconfig/storage.php(local,local_public,null); default disk forput/get/…;storeUpload/publicRootuseupload_disk/public_disk.Storage::setBasePath($basePath)at bootstrap (Application::bootand app bootstrap).Support\Benchmarkstatic stopwatch helper with named timers:start,has,elapsedNs,elapsedMs,elapsedSeconds,measure,forget.
Changed
- Breaking: Database is multi-connection:
config/database.phpusesdefaultandconnections.{name}.driver(sqlite, mysql, pgsql).Vortex\Database\DatabaseManageris registered in the container;Connectionis constructed with aPDOfrom the manager;DB::connection(?string)selects a connection. Env:DB_CONNECTION(default connection name, defaultdefault). - Breaking: Cache is multi-store:
config/cache.phpusesdefaultandstores.{name}.driver(like storage disks).Vortex\Cache\CacheManageris registered in the container;Cache::store(?string)selects a store;CacheFactory::make()returns the default store via the manager. Env:CACHE_STORE(default store name),CACHE_DRIVERonly used whenCACHE_STOREis unset. - Breaking: Session is multi-store:
config/session.phpusesdefaultandstores.{name}.driver(native,null).Vortex\Http\SessionManageris registered in the container;Sessionfacade uses the default store;Session::store(?string)selects a store;Csrfnow reads/writes through theSessionfacade. Env:SESSION_STOREcontrols default store name. - Breaking:
QueryBuilder::paginate()returnsVortex\Pagination\Paginatorinstead of an array. Use$paginator->itemsand the same public count fields (total,page,per_page,last_page). For page links, callwithBasePath()(e.g. withroute('name')) thenurlForPage($n); helpershasPages(),onFirstPage(), andonLastPage()are available for templates. - Breaking:
Log::exception(Throwable $e)only — project root comes fromLog::setBasePath()(Application::boot()and app bootstrap call it).ErrorRendererhas no constructor parameters.
v0.1.0: Release 0.1.0
Breaking
- HTTP route files (
app/Routes/*.phpexcept*Console.php) arerequired and must register routes at the top level withRoute::get/post/add— noreturn static function (): void { … }wrapper. Console route files stillreturn callable(ConsoleApplication): void.
Added
- Routing: named routes (
Router::name,Router::path,Route::name()), globalroute()helper and Twigroute(),Router::interpolatePattern(). - HTTP testing:
Kernel::handle(Request),Request::make(),Request::normalizePath(),Response::headers(). - Rate limiting:
RateLimiter,Middleware\Throttle(cache-backed fixed window),config/throttle.phppattern in apps. php vortex doctor: requiresext-mbstring;doctor --productionrequires non-emptyAPP_KEY.
Changed
Kernel::send()appliesTrustProxies, captures the request, then delegates tohandle()beforesend()on the response.
v0.0.1
Create README.md