====== PostViewModel ======
**Layer:** ''Core'' · **Source:** ''lib/core/Theme/PostViewModel.php:19'' (lines 19–159)
----
final class PostViewModel extends AbstractThemeViewModel
Post view model.
Carries the already-escaped, display-ready fields for a single post
(home, single, category, tag, blog and search list rendering). Templates
print the getters directly; no logic, no queries.
======= Docblock Metadata =======
^ Tag ^ Value ^
| ''@category'' | Theme |
| ''@author'' | M.Noermoehammad |
| ''@license'' | MIT |
| ''@version'' | 1.0 |
======= Inheritance =======
^ Relation ^ Type ^ Meaning ^
| extends | [[scriptlog:lib:core:abstractthemeviewmodel|''AbstractThemeViewModel'']] | parent class/interface |
======= Constants (0) =======
//None.//
======= Properties (0) =======
//None declared.//
======= Methods (17) =======
^ Visibility ^ Method ^ Summary ^ Line ^
| public static | ''fromRow()'' | Build a post view model from a prepared row. | 28 |
| public static | ''fromPrepared()'' | Build a post view model from already-prepared, already-safe values. | 73 |
| public | ''id()'' | | 85 |
| public | ''title()'' | | 90 |
| public | ''url()'' | | 95 |
| public | ''slug()'' | | 100 |
| public | ''author()'' | | 105 |
| public | ''date()'' | | 110 |
| public | ''excerpt()'' | | 115 |
| public | ''content()'' | | 120 |
| public | ''media()'' | | 125 |
| public | ''mediaCaption()'' | | 130 |
| public | ''tags()'' | | 135 |
| public | ''visibility()'' | | 140 |
| public | ''type()'' | | 145 |
| public | ''comments()'' | | 150 |
| public | ''topics()'' | | 155 |
======== fromRow() ========
public static function fromRow(array $row, callable $escape)
//lines 28–57 (30)//
Build a post view model from a prepared row.
^ Parameter ^ Type ^ Default ^ Description ^
| ''$row'' | ''array'' | //required// | //none// |
| ''$escape'' | ''callable'' | //required// | //none// |
**Returns:** ''(none declared)'' — static
======== fromPrepared() ========
public static function fromPrepared(array $prepared)
//lines 73–82 (10)//
Build a post view model from already-prepared, already-safe values.
Used by the theme card pipeline (prepare_post_card()): the values are
escaped or sanitized exactly once at the normalization boundary, so they
are stored verbatim with no second escaping pass. Fields that are trusted
sanitized HTML (content, topics) must be passed as-is and printed as-is.
^ Parameter ^ Type ^ Default ^ Description ^
| ''$prepared'' | ''array'' | //required// | //none// |
**Returns:** ''(none declared)'' — static
======== id() ========
public function id(): ?string
//lines 85–88 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== title() ========
public function title(): ?string
//lines 90–93 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== url() ========
public function url(): string
//lines 95–98 (4)//
//Takes no parameters.//
**Returns:** ''string''
======== slug() ========
public function slug(): ?string
//lines 100–103 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== author() ========
public function author(): ?string
//lines 105–108 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== date() ========
public function date(): ?string
//lines 110–113 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== excerpt() ========
public function excerpt(): ?string
//lines 115–118 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== content() ========
public function content(): ?string
//lines 120–123 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== media() ========
public function media(): ?string
//lines 125–128 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== mediaCaption() ========
public function mediaCaption(): ?string
//lines 130–133 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== tags() ========
public function tags(): ?string
//lines 135–138 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== visibility() ========
public function visibility(): ?string
//lines 140–143 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== type() ========
public function type(): ?string
//lines 145–148 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== comments() ========
public function comments(): ?string
//lines 150–153 (4)//
//Takes no parameters.//
**Returns:** ''?string''
======== topics() ========
public function topics(): ?string
//lines 155–158 (4)//
//Takes no parameters.//
**Returns:** ''?string''
----
//This page is generated from source by 'tools/gendoc'. Edits will be overwritten.//