See what your friends write:
Singleton
Pagination
Oraedoop
adminer
M-V data flow. SEES in picture means : C assigns variables from user request in URL (from URL query) telling V what user wants and includes V (not showed in picture). UPDATES in picture means : V pulls data from M according C variables. MANIPULATES in picture means : V (user request) may call C method for some state changes ordered by user (USES in picture) in URL ee table row updates like approve user comment (see msg module). User`s events are so handled in Controller class. V script may contain class but I do not see need for view classes.
View gets (singleton) or instantiates model object and pulls data from M. If we have user`s interactions (events) eg filter displayed rows (pagination is sort of filtering), than M-V data flow is only possible solution.
M-C-V data flow - controller instantiates M and pushes M data to V. I do not see advantages compared to M-V data flow. Disadvantage are : for pagination M-V data flow is only possible solution, C is fat in large modules (lot of code). C in my msg (blog) module has lot of code, but code is very simple.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus provident...
PHP_OS=Linux, php_uname()=Linux f21.runhosting.com 4.9.262kvmcap #1 SMP Mon Mar 22 12:49:19 UTC 2021 x86_64
$_SERVER['DOCUMENT_ROOT']=/home/www/phporacle.eu5.net
$_SERVER['REQUEST_URI']=/fwphp/www/?lang=hr
$_SERVER['QUERY_STRING']=lang=hr
$_SERVER['HTTP_HOST']=phporacle.eu5.net
~~~~~~~~~/srv/disk16/3266814/www/phporacle.eu5.net/zinc/ftr.php() , line 78 SAYS: $_ GET=Array ( [lang] => hr ) $_POST=Array ( ) $_SESSION=Array ( [lang] => hr )