Default value for parameters with a class type hint can only be NULL

Allconius
Člen | 317
+
0
-

Ahoj,

už se mi to stalo vícekrát, při implementaci různých rozšíření, že mi nefunguje defaultní nastavení proměnných ve funkci a může to být jen null. Konkrétně jsem si nainstaloval: https://github.com/…csv-response a vyhazuje mi to:

<?php
Compile Error
Default value for parameters with a class type hint can only be NULL
?>

ten kód co mu vadí je hlavička funkce na řádku 92:
File: …/xsuchy09/nette-csv-response/src/CsvResponse.php:92

<?php
92:        public function __construct($data, string $filename = 'output.csv', bool $addHeading = true)
93:        {
94:            if (true === $data instanceof Traversable) {
95:                $data = iterator_to_array($data);
96:            }
?>

Předpokládám, že tam chce místo

<?php
$filename = 'output.csv'
?>

mít

<?php
$filename = null
?>

, ale proč ?

David Matějka
Moderator | 6445
+
0
-

co máš za verzi PHP?

Allconius
Člen | 317
+
0
-

David Matějka napsal(a):

co máš za verzi PHP?

Ahoj, je to:
PHP Version 7.1.27
s moduly:
bcmath
bz2
calendar
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib

nechybí mi tam třeba něco ?

David Matějka
Moderator | 6445
+
+1
-

Dle té chybové hlášky to vypadá, jako by ti to běželo na php 5.6: https://3v4l.org/VIjoT

Allconius
Člen | 317
+
0
-

David Matějka napsal(a):

Dle té chybové hlášky to vypadá, jako by ti to běželo na php 5.6: https://3v4l.org/VIjoT

ajo, no jde o to že to nette bylo stažený pro 5.6 a pak nějaký další rozšíření taky pro 5.6 až teď jsem upravil ten composer.json pro 7.1 a nainstaloval ten https://github.com/…csv-response , takže asi stáhnout nette pro 7.1 + ty další rozšíření taky pro 7.1, že ? Asi se to tam nějak mlátí :-)

Allconius
Člen | 317
+
0
-

když dám:

<?php
composer update
?>

tak se aktualizuje jen nette, jde nějaký příkaz aby to prošlo už i ty doinstalované věci a aktualizovalo to na novou verzi php ?

David Matějka
Moderator | 6445
+
0
-

úprava v composeru nestačí, musíš aktualizovat webový server

Allconius
Člen | 317
+
0
-

David Matějka napsal(a):

úprava v composeru nestačí, musíš aktualizovat webový server

Ahoj, máš pravdu jsem to nějak popletl, mám těch serverů víc a na tomto je opravdu ještě verze 5.6