chore: Типы для параметров

This commit is contained in:
origami11@yandex.ru 2025-05-13 17:26:49 +03:00
parent 6ef65fc826
commit 36c81135f3
7 changed files with 55 additions and 95 deletions

View file

@ -35,7 +35,7 @@ class Composite extends View
function execute()
{
parent::execute();
$this->processChild();
return $this->tal->execute();
}

View file

@ -1,16 +0,0 @@
<?php
namespace ctiso\View;
use ctiso\View\View;
class ListView extends View
{
function execute()
{
$result = [];
foreach ($this->_section as $key => $value) {
$result [] = $value->execute();
}
return $result;
}
}

View file

@ -21,7 +21,7 @@ class View extends \stdClass
public $suggestions; //подсказки
public $alias = array();
public $alias = [];
public $codeGenerator = null;
public $parent_view = null;
@ -34,7 +34,7 @@ class View extends \stdClass
* @param string $section переменная шаблона
* @param View|string $view вложенный шаблон
*/
public function setView($section, $view/*: View|string*/)
public function setView($section, $view)
{
$this->_section [$section] = $view;
if (is_object($view)) {
@ -42,23 +42,18 @@ class View extends \stdClass
}
}
public function assignValues($values)
public function assignValues($values): void
{
$this->_values = $values;
$this->_values["suggestions"] = $this->suggestions;
}
public function setGlobal($name, $args)
{
$this->addScriptRaw("var " . $name . " = " . json_encode($args) . ";\n", false);
}
/**
* Добавляет скипт к текущему шаблону
*
* @param string $name путь к скрипту
*
* @param string $name путь к скрипту
*/
public function addScript($name)
public function addScript($name): void
{
$output = $this->resolveName($this->alias, $name . '?' . http_build_query($this->prefix));
$this->_script [] = $output;
@ -69,7 +64,7 @@ class View extends \stdClass
*
* @param string $name строка javascript кода
*/
public function addScriptRaw($name, $startup = false)
public function addScriptRaw($name, $startup = false): void
{
if ($startup) {
$this->_startup [] = $name;
@ -84,16 +79,16 @@ class View extends \stdClass
/**
* Добавляет стили к текущему шаблону
*
*
* @param string $name путь к стилю
*/
public function addStyleSheet($name)
{
$output = $this->resolveName($this->alias, $name . '?' . http_build_query($this->prefix));
$this->_stylesheet [] = $output;
$output = $this->resolveName($this->alias, $name . '?' . http_build_query($this->prefix));
$this->_stylesheet [] = $output;
}
/**
/**
* Рекурсивно извлекает из значение свойства обьекта
*
* @param string $list Имя свойства
@ -117,11 +112,11 @@ class View extends \stdClass
/*abstract*/ public function set($key, $value)
{
}
/**
* Обработка всех вложенных шаблонов
*/
public function execute()
public function processChild(): void
{
foreach ($this->_section as $key => $value) {
$this->set($key, (is_object($value)) ? $value->execute() : $value); // ?
@ -133,28 +128,28 @@ class View extends \stdClass
*
* @param string $title
*/
public function setTitle($title)
public function setTitle($title): void
{
$this->_title = $title;
$this->_title = $title;
}
protected function isNotNull($title)
protected function isNotNull($title): bool
{
return $title !== null;
return $title !== null;
}
function setAlias($alias)
function setAlias($alias): void
{
$this->alias = $alias;
}
function addAlias($name, $path)
function addAlias($name, $path): void
{
$this->alias[$name] = $path;
$this->set($name, $path);
}
function find_file($pathlist, $file) {
function findFile($pathlist, string $file): string {
foreach($pathlist as $key => $www) {
if (file_exists($key . '/' . $file)) {
@ -162,16 +157,16 @@ class View extends \stdClass
}
}
throw new Exception("file not found: $file");
}
}
// FIXME: Префикс, конфликтует с протоколом
function resolveName($alias, $file) {
list($type, $filename) = explode(":", $file, 2);
// Сделать поиск а не просто замену папки при совпадении имени
// Сделать поиск а не просто замену папки при совпадении имени
if (isset($alias[$type])) {
if (is_array($alias[$type])) {
$output = $this->find_file($alias[$type], $filename);
$output = $this->findFile($alias[$type], $filename);
} else {
$output = $alias[$type] . '/' . $filename;
}
@ -180,26 +175,6 @@ class View extends \stdClass
return $file;
}
function loadImports($importFile)
{
$types = [
'js' => [$this, 'addScript'],
'css' => [$this, 'addStyleSheet']
];
// Подключение стилей и скриптов
if (file_exists($importFile)) {
$files = file($importFile);
foreach ($files as $file) {
// Получить расширение вместо strpos
$file = trim($file);
if (!empty($file)) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
call_user_func($types[$ext], $file);
}
}
}
}
public function resolveAllNames($alias, $list) {
$result = [];
foreach($list as $item) {