Fatal error: Declaration of Helpers::length($var) must be compatible with Filters::length($val): int
- Čamo
- Člen | 798
Zdravím,
dnes som po update vendoru narazil na takýto error: Fatal error:
Declaration of Nette\Templating\Helpers::length($var) must be compatible with
Latte\Runtime\Filters::length($val): int in
/var/www/branches/53-bilancia-roka-2018/vendor/nette/deprecated/src/Templating/Helpers.php
on line 18
Deklarácia v parent class Filters vyzerá takto:
/**
* Returns length of string or iterable.
* @param array|\Countable|\Traversable|string $val
*/
public static function length($val): int
{
if (is_array($val) || $val instanceof \Countable) {
return count($val);
} elseif ($val instanceof \Traversable) {
return iterator_count($val);
} else {
return self::strLength($val);
}
}
a deklarácia v child class Helpers
/**
* Returns array of string length.
* @param mixed
* @return int
*/
public static function length($var)
{
return is_string($var) ? Strings::length($var) : count($var);
}
To vyzerá ako bug.
- David Matějka
- Moderator | 6445
teoreticky je to fixnuty v nove verzi nette/deprecated. ale nez aktualizovat, tak tu zavislost odeber.
- David Matějka
- Moderator | 6445
Ano, vyšlo nette/deprecated 3.0, které už zmiňovanou třídu neobsahuje. také vyšlo latte 2.5, které je právě nekompatibilní s tvým nette/deprecated ve verzi 2.4. více o vydání nových verzí: https://forum.nette.org/…ktualizovano
takže po třetí a naposled: zbav se závislosti na nette/deprecated. meta balíček není doporučeno používat, viz composer.json ve web-project
- Čamo
- Člen | 798
Takže znova a naposledy. Zápis „nette/nette“: „~2.4.0“ sa
neodporúča (odkedy?) čo vlastne znamená že si mám všetky závislosti pre
Nette ťahať ručne a zisťovať či sú navzájom kompatibilné? Nesmeruje to
dúfam k require_once?
@DavidMatějka
PS: Neviem čo je meta balíček. Čo tak písať vety aby ich chápal každý? To sa určite pri propagácii Nette zíde.
Editoval Čamo (26. 2. 2019 10:20)
- Čamo
- Člen | 798
@MajklNajt @CZechBoY To ja predsa viem. To ale neznamená že neexistujú staršie projekty ktoré sú založené inak. No a nie som si istý ale viete že ak sa ťahajú balížky osobitne tak treba ručne vyriešiť nekompatibilitu medzi nimi? Čo mi príde ako nebezpečné… Alebo sa mýlim?
Editoval Čamo (26. 2. 2019 13:16)
- MajklNajt
- Člen | 502
@Čamo keď sa zbavíš závislosti na nette/deprecated
,
zbavíš sa nekompatibility :) a nemusíš riešiť ručne, rieši to za teba
napr. nette/web-project
, ktorý má vždy
composer.json
s kompatiblinými balíčkami – viď poslednú
otagovanú verziu https://github.com/…omposer.json
- David Grudl
- Nette Core | 8239
@Čamo dává naprosto validní bugreport, že instalace nette/nette nefunguje, je přece jedno, že dnes raději používáte něco jiného.
Vydal jsem nette/nette 2.5, které už netahá balíčky nette/deprecated & nette/reflection, a mělo by tedy fungovat i pod PHP >= 7.1