Что же в нем такого плохого?
Маленький, шустрый, удобный
для скачивания не требует установки композеров и всякого такого
Что есть в других фреймворках такого, чего нет в старичке CodeIgniter?
Или действительно CI мертв?
<?php
namespace MyVendor\MyApplication\AppBundle\Tests;
use KoKoKo\assert\Assert;
use KoKoKo\assert\exceptions\InvalidNotEmptyException;
use KoKoKo\assert\exceptions\InvalidNotObjectException;
use KoKoKo\assert\exceptions\InvalidStringException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface;
trait ControllerTrait
{
/**
* @param Request $request
* @param string $controllerClass
* @param string $actionName
* @throws InvalidNotEmptyException
* @throws InvalidNotObjectException
* @throws InvalidStringException
*/
public function checkRoute(Request $request, $controllerClass, $actionName)
{
Assert::assert($controllerClass, 'controllerClass')->string()->notEmpty();
Assert::assert($actionName, 'actionName')->string()->notEmpty();
/** @noinspection PhpUndefinedMethodInspection */
static::$kernel->getContainer()->get('router_listener')->onKernelRequest(
new GetResponseEvent($this->getKernel(), $request, HttpKernelInterface::MASTER_REQUEST)
);
$parameters = $request->attributes->all();
/** @noinspection PhpUndefinedMethodInspection */
$this->assertInternalType('array', $parameters);
/** @noinspection PhpUndefinedMethodInspection */
$this->assertArrayHasKey('_controller', $parameters);
/** @noinspection PhpUndefinedMethodInspection */
$this->assertSame($controllerClass . '::' . $actionName, $parameters['_controller']);
}
}
<?php
namespace MyVendor\MyApplication\AppBundle\Tests\Unit\Controller;
use MyVendor\MyApplication\AppBundle\Controller\MyController;
use MyVendor\MyApplication\AppBundle\Tests\ControllerTrait;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\HttpFoundation\Request;
class MyControllerTest extends KernelTestCase
{
use ControllerTrait;
public function testMyRoute()
{
self::bootKernel();
$request = new Request();
$request->server->set('REQUEST_URI', '/MyRoute');
$request->setMethod('POST');
$this->checkRoute($request, MyController::class, 'myRouteOfMyController');
}
}
У js есть jquery, а у php что?
Например, такая банальность, как валидация форм: у меня есть собственные наработки и я могу их использовать, но ведь они далеки от идеала.
/**
* @Route("/profile/{id}", name="getProfile")
* @Method({"GET"})
* @param Request $request
* @return JsonResponse
*/
public function getProfileAction(Request $request): JsonResponse
{
try {
$id = $request->attributes->get('id');
if (is_null($id)) {
return new JsonResponse("Param 'id' is required", JsonResponse::HTTP_BAD_REQUEST);
} elseif (!is_string($id)) {
return new JsonResponse("Param 'id' must be string", JsonResponse::HTTP_BAD_REQUEST);
} elseif (!ctype_digit($id)) {
return new JsonResponse("Param 'id' must be digit", JsonResponse::HTTP_BAD_REQUEST);
}
// Business logic here
return new JsonResponse();
} catch (\Throwable $exception) {
return new JsonResponse($exception->getMessage(), JsonResponse::HTTP_BAD_REQUEST);
}
}
try {
$id = $request->attributes->get('id');
Assert::assert($id, 'id')->notNull()->string()->digit();
} catch (\Throwable $exception) {
return new JsonResponse($exception->getMessage(), JsonResponse::HTTP_BAD_REQUEST);
}
try {
// Business logic here
return new JsonResponse();
} catch (\Throwable $exception) {
return new JsonResponse($exception->getMessage(), JsonResponse::HTTP_BAD_REQUEST);
}
Есть ли подобные отработанные решения в фреймворках, они дают что-то кроме "каркаса"?
И почему нет библиотек популярных для php?
preg_replace('/[^\d]/', '', $inputString);
Ключевые навыки
html, css, js, php
Обо мне
В последнее время нахожусь в поисках работы.
Полный список этих моделей (имя класса)
Соответствующая таблица (+ Entity - их может быть несколько)
Проверить, соответствует ли структура таблицы в базе модели данных, а если не соответствует - то в каких полях есть отличия, отличающиеся ключи и т.п.
ну и кнопка пофиксить с предварительным просмотром sql.
Как быстро все умрет?
Хостинг не поможет?
Как сделать чтобы не украли скрипт?
Если существует ли возможность динамической смены имени класса?
Это решение для очень кривой архитектуры
разработчик не хочет использовать пространства имён ввиду того что проект насчитывает десятки тысяч классов.