afstellar / af-stellar-core
Lightweight MVC core with ORM, Migrations and Query Builder
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/afstellar/af-stellar-core
Requires
- php: ^7.3
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2026-01-03 17:44:54 UTC
README
Developer / Разработчик
*Andre Moore*
Requirements / Требования
- PHP 7.3 or higher / PHP 7.3 или выше
- MySQL database / База данных MySQL
Configuration Setup / Настройка конфигурации
Description / Описание:
Using the Config Class / Использование класса Config The framework provides a simple configuration system through the App\Core\Config class. Фреймворк предоставляет простую систему конфигурации через класс App\Core\Config https://packagist.org/packages/afstellar/af-stellar-core
Config::init([ 'DB_HOST' => '127.0.0.1', 'DB_NAME' => 'app_db', 'DB_USER' => 'app_user', 'DB_PASS' => 'secure_password' ]);
Base Classes / Базовые классы
app\Core\Model:
Description / Описание:
The Model. Base class inherited by all models /
Модель. Базовый класс, который наследуют все модели
Properties / Свойства:
protected static $table- representation or table associated with the model / представление или таблица, с которой связана модельprotected $fillable- array of table fields mapped to the model / массив полей таблицы, отображенный в моделиprotected $relations- array of related model data obtained through relationships / полученный массив данных моделей связанных отношениямиprotected $joined- array of data obtained through table joins / полученный массив данных полученных с помощью join присоединения таблицprotected $exists- indicates whether model data exists in the database / отображение существования данных модели в БДprotected static $columnTypes- array of data types for$fillablefields / массив типов данных полей$fillableв таблице модели
Methods / Методы:
getColumnTypes()- get$columnTypes/ получение$columnTypesgetColumnType($column)- get data type for specific field / получение типа данных для определенного поляquery()- execute database query viaQueryBuilder/ выполнение запроса к бд черезQueryBuildergetFillable()- get all$fillable/ получение всех$fillablefill(array $values)- mass attribute assignment / массовое заполнение атрибутовsave()- save new model to database / сохранение новой модели в бдupdate(array $attributes)- update model in database by id / обновление модели в бд по iddelete()- delete model from database by id / удаление модели из бд по idall()- get all class instances from database / получение всех экземпляров класса из бдfind($value, $name = 'id')- get specific class instance from database / получение конкретного экземпляра класса из бдhasMany($related, $foreignKey = null, $localKey = 'id')- basic model relationship implementation / базовая реализация отношений моделейbelongsTo($related, $foreignKey = null, $ownerKey = 'id')- basic model relationship implementation / базовая реализация отношений моделей
app\Core\QueryBuilder:
Description / Описание:
Query Builder. Base class used in model objects and DB facade /
Построитель запросов. Базовый класс, используется в объектах модели и фасаде DB
Methods / Методы:
select($columns = ['*'])- specify fields to select / указание полей получаемых вSELECTзапросеwhere($column, $operator, $value = null)-WHEREcondition / условиеWHEREorWhere($column, $operator, $value = null)-OR WHEREcondition / условиеOR WHEREwhereGroup(\Closure $callback)- condition grouping function / использование функции группировки условийorWhereGroup(\Closure $callback)- condition grouping function / использование функции группировки условийwhereIn($column, array $values)-WHERE INcondition / условиеWHERE INwhereNull($column)-WHERE NULLcondition / условиеWHERE NULLwhereNotNull($column)-WHERE NOT NULLcondition / условиеWHERE NOT NULLget()- compile query and get data / компиляция запроса и получение данныхjoin($table, $first, $operator = null, $second = null, $type = 'INNER')-INNER JOINleftJoin($table, $first, $operator = null, $second = null)-LEFT JOINrightJoin($table, $first, $operator = null, $second = null)-RIGHT JOINfirst()- get first row of query / получение первой строки запросаlimit($limit)-LIMITclause / условиеLIMIToffset($offset)-OFFSETclause / условиеOFFSETinsert(array $data)- insert data into database / добавление данных в бдupdate(array $data)- update data in database / обновление данных в бдdelete()- delete from database / удаление из бдorderBy($column, $direction = 'ASC')- sorting / сортировкаtoRawSql()- compile query to SQL string / компиляция запроса и вывод в sql строкуtoRawSqlData()- compile query to SQL string with data / компиляция запроса и вывод в sql строку с подставленными даннымиselectRaw($expression, $bindings = [])- raw SQL for custom field inSELECT/ sql строка для произвольного поля вSELECTwhereRaw($sql, $bindings = [])- raw SQL for customWHEREcondition / sql строка для произвольного условияWHERE
app\Core\DB:
Description / Описание:
DB Facade. Base class for database queries without model, returns array /
Фасад DB. Базовый класс, построение запросов к бд без указания модели, ответ выводится в массив
Properties / Свойства:
protected static $connection- database connection (default - main DB) / подключение к бд (базовое - основная бд)
Methods / Методы:
setConnection(PDO $connection)- establish database connection / установление подключения к бд, если нужно подключиться к другой бдtable($table)- select table for query / выбор таблицы для запросаraw($value)- raw SQL query string / строка sql запросаselect($sql, $bindings = [])-SELECTquery string and parameters / строкаSELECTзапроса и массив параметровinsert($sql, $bindings = [])-INSERTquery string and parameters / строкаINSERTзапроса и массив параметровupdate($sql, $bindings = [])-UPDATEquery string and parameters / строкаUPDATEзапроса и массив параметровdelete($sql, $bindings = [])-DELETEquery string and parameters / строкаDELETEзапроса и массив параметров
app\Core\Controller:
Description / Описание:
Controller. Base class inherited by all controllers /
Контроллер. Базовый класс, наследуемый всеми контроллерами
Methods / Методы:
view($viewName, $data = [])- render$datain$viewNameview / вывод данных$dataв представление$viewNamejson($data)- output data in json format / вывод данных в json формате
app\Core\Collection:
Description / Описание:
Коллекция моделей. Обеспечивает удобную работу с наборами моделей
Methods / Методы:
all()- получить все модели коллекцииfirst()- получить первую модельlast()- получить последнюю модельfilter(callable $callback)- фильтрация коллекцииwhere(string $key, $value, bool $strict = true)- фильтрация по атрибутуfirstWhere(string $key, $value)- возвращает первый найденный элемент коллекцииsortBy(string $key, bool $ascending = true)- сортировка по атрибутуkeyBy(string $key)- установка значения как ключаchunk(int $size)- забирает часть коллекцииpluck(string $key)- получить массив значений атрибутаmap(callable $callback)- преобразование коллекцииeach(callable $callback)- итерация по коллекцииtoArray()- преобразовать в массивgroupBy(string $key)- группировка по ключуtoJson()- преобразовать в JSONsave()- сохранить все модели коллекцииdelete()- удалить все модели коллекции
Migrations / Миграции
//Migration example / Пример миграции namespace App\Database\migrations; use App\Core\Database\Migration; class UserMigration extends Migration { public function up() { // Код миграции $this->createTable('users', function($table) { $table->increments('id'); $table->string('name'); $table->string('email'); $table->string('password'); $table->timestamps(); }); } public function down() { $this->dropTable('users'); } }
Migration Commands / Команды миграций
Executed within the app directory /
Выполняется внутри каталога app
Usage / Использование:
php migrate.php [command] [parameters]
php migrate.php [команда] [параметры]
Available commands / Доступные команды:
migrate - Run all pending migrations / Выполнить все новые миграции
rollback [steps] - Rollback migrations (default: 1) / Откатить миграции (по умолчанию 1)
create - Create new migration file / Создать новый файл миграции
help - Show this help message / Показать эту справку
Examples / Примеры
//all() User::all(); //first() User::first(); //find() User::find(10); //where() User::query()->where('name', 'John')->where('login', 'like', 'John%')->first(); //Generates query response / Сформирует ответ на запрос: "SELECT * FROM `users` WHERE `name` = 'John' AND `login` like 'John%' LIMIT 1" //whereIn() User::query()->whereIn('login', ['John', 'Doe'])->get(); //Generates query response / Сформирует ответ на запрос: "SELECT * FROM `users` WHERE `login` IN ('John', 'Doe')" //whereGroup() User::query()->whereGroup(function($query) { $query->where('name', 'John')->orWhere('login', 'John'); })->get(); //Generates query response / Сформирует ответ на запрос: "SELECT * FROM `users` WHERE (`name` = 'John' OR `login` = 'John')" //фасад DB DB::table('users')->where('id', '<', 5)->limit(2)->get(); //Returns array response for query / Сформирует ответ в виде массива на запрос: "SELECT * FROM `users` WHERE `id` < 5 LIMIT 2" //join() DB::table('users') ->leftJoin('posts as p', 'users.id', '=', 'p.user_id') ->where('users.id', 5) ->select(['users.*', 'p.code as post_code']) ->get(); //Returns array response for query / Сформирует ответ в виде массива на запрос: "SELECT `users`.*, `p`.`code` as `post_code` FROM `users` LEFT JOIN `posts` as `p` ON `users`.`id` = p.user_id WHERE `users`.`id` = 5" //update() DB::table('users')->where('id', 5) ->update(['login' => 'John']); //или User::find(5)->update(['login' => 'John']); // Фильтрация $activeUsers = User::all()->where('active', true); // Массовое обновление User::all() ->where('role', 'user') ->each(function($user) { $user->last_login = now(); }) ->save(); //view() - in controller / в контроллере namespace App\Controllers; use App\Models\User; class UserController extends Controller { public function index() { $users = User::all(); return $this->view('users', compact(['users'])); } //Other class methods / Другие методы класса } //Usage in code / Использование в коде: $userController = new UserController(); $userController->index();
Will render view Views\users.php / Выведет представление Views\users.php
If view is stored in Views\Users\index.php, specify in view: $this->view('users.index', compact(['users'])) /
Если представление хранится в Views\Users\index.php, то во view указывается $this->view('users.index', compact(['users']))