폼 팩터 PHP, 템플릿 엔진으로 모델 확인
10192 단어 PHP
src/Page/Product.php
<?php
class Product
{
public static function index($db)
{
// ...
}
public static function detail($db, $productId)
{
// ...
}
}
만약 이러한 페이지 전용 학급(동작 클래스, 컨트롤러 클래스)이 있다면src/Model/Product.php
<?php
namespace MyProject\Model;
use MyProject\Dto;
class Product
{
private $db;
public function __construct($db)
{
$this->db = $db;
}
/**
* @return array<Dto\Product>
*/
public function getList($limit, $offset): array
{
// $db->find($this->conditions(), $limit, $offset)
return [];
}
public function get($productId): Dto\Product
{
// return $db->get($productId);
return new Dto\Product();
}
}
이런 모형을 호출하다src\Dto\Product.php
<?php
namespace MyProject\Dto;
use DateTimeInterface;
use DateTimeImmutable;
class Product
{
/** @var int */
public $product_id;
/** @var string */
public $product_name;
/** @var string */
public $product_code;
/** @var int */
public $price;
/** @var ?int */
public $discount;
/** @var DateTimeInterface */
public $created_at;
/** @var ?DateTimeInterface */
public $updated_at;
public $db_created_at;
public $db_updated_at;
public function __construct()
{
// ...
$this->created_at = new DateTimeImmutable($this->db_created_at);
if ($this->db_updated_at &&
$this->db_updated_at != $this->db_created_at)
$this->updated_at = new DateTimeImmutable($this->db_updated_at);
}
}
이런 대상을 얻다.이렇게 하면 페이지용 반.
src/Page/Product.php
<?php
namespace MyProject\Page;
use MyProject\Model;
use MyProject\template;
class Product
{
public static function index($db)
{
$model = new Model\Product($db);
$products = $model->getList(10, 0);
template\product\index::exec($products);
}
public static function detail($db, $productId)
{
$model = new Model\Product($db);
$product = $model->get($productId);
return template\product\detail::exec($product);
}
}
이렇게 된 느낌.$product
은Dto\Product
이므로 템플릿 클래스는template\product\detail.php
<?php
namespace MyProject\template\product;
use MyProject\Dto;
class detail
{
public static function exec(Dto\Product $product)
{
// ...
}
}
이렇게 돼서nullable
에 오류가 발생했음을 알았습니다.수정 후 기쁘고 축하할 만하다.
지금까지는 다양한 움직임이 생겨서 한 바퀴 돌면서 더 잘 쓰고 싶었다.
phpstan
를 사용하면 간단한if문도 검사할 수 있고 템플릿 엔진으로 @if
하거나 {{ $product->updated_at->format('Ymd') }}
쓰면 정적 해석이 작동하지 않습니다.이전에는 쓰기도 의미가 없었고 문자, 숫자,null 등은 모두 템플릿 엔진에 삽입되었고 일부 키로 수치를 비교적 빨리 움직였다.
지금, 혹은 PHP7.4부터 위 코드에
Dto
의 속성은 낚시형을 쓸 수 있어야 한다고 했는데, 그러면 원래의 PHP로 HTML 검사를 출력하면 행복할 수 있을까요?그런 생각.탭 점프를 설정하면 템플릿의 변수부터 코드까지 왕복도 빨라서 쉬워요.(템플릿 엔진을 사용해도 키워드로 비행할 수 있지만 날고 싶은 곳에서 벗어난다.)
스타일리스트를 쓰는 사람들은 HTML과 변수가 결합된 곳에서 스타일 검사를 어떻게 하는가.
다만 IDE를 사용하지 않기 때문에 모릅니다. 예를 들어 Phptorm과 Blade 같은 경우 템플릿 엔진도 표준 검사 모델 같은 것을 받을 수 있습니다.
Reference
이 문제에 관하여(폼 팩터 PHP, 템플릿 엔진으로 모델 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nishimura/items/bfabfb137abe42e62c39텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)