Bonsoir, j'ai beau chercher mais je ne trouve et surtout comprends pas pourquoi j'ai cette erreur. Bon, j'ai bien compris qu'il manque un argument.
L'erreur :
Details
Type: ErrorException
Code: 2
Message: Missing argument 2 for Helpers\RecursiveFilenameFilter::__construct()
File: /mypath/app/helpers/RecursiveFilenameFilter.php
Line: 8
Trace
0 Applications/MAMP/htdocs/PHP/lumos/app/helpers/RecursiveFilenameFilter.php(8): Slim\Slim::handleErrors(2, 'Missing argumen...', '/Applications/M...', 8, Array)
1 [internal function]: Helpers\RecursiveFilenameFilter->__construct(Object(RecursiveDirectoryIterator))
2 /mypath/app/helpers/PagesController.php(14): RecursiveFilterIterator->getChildren()
3 /mypath/config/router.php(17): Helpers\PagesController->__construct(Object(Slim\Slim))
4 [internal function]: Router->{closure}('californie')
5 /mypath/vendor/slim/slim/Slim/Route.php(468): call_user_func_array(Object(Closure), Array)
6 /mypath/vendor/slim/slim/Slim/Slim.php(1357): Slim\Route->dispatch()
7 /mypath/vendor/slim/slim/Slim/Middleware/Flash.php(85): Slim\Slim->call()
8 /mypath/vendor/slim/slim/Slim/Middleware/MethodOverride.php(92): Slim\Middleware\Flash->call()
9 /mypath/vendor/slim/slim/Slim/Middleware/PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call()
10 /mypath/vendor/slim/slim/Slim/Slim.php(1302): Slim\Middleware\PrettyExceptions->call()
11 /mypath/public/index.php(18): Slim\Slim->run()
12 {main}
J'ai ça :
$regex = '/^([.][^.\/\\])|([\/\\]+[.][^.])/';
$iterator = new \RecursiveDirectoryIterator(CONTENT_PATH);
$iterator->setFlags(\RecursiveDirectoryIterator::SKIP_DOTS);
$files = new \RecursiveIteratorIterator(new RecursiveFilenameFilter($iterator, $regex), \RecursiveIteratorIterator::SELF_FIRST);
Ma Class :
namespace Helpers;
class RecursiveFilenameFilter extends \RecursiveFilterIterator {
private $regex;
public function __construct(\Iterator $iterator, $regex ) {
parent::__construct($iterator);
$this->regex = $regex;
}
public function accept() {
if(preg_match_all($this->regex, $this->getInnerIterator()->current()->getFilename() ) ){
return false;
}
return true;
}
}
Merci,
des bisous.
Il manquait ça =>
public function getChildren() {
return new self($this->getInnerIterator()->getChildren(), $this->regex);
}
RecursiveFilenameFilter attends 2 paramètre lors de sa construction, et tu ne lui en envoit qu' un seul
Oui mais ici j'ai bien deux argument ? RecursiveFilenameFilter($iterator, $regex) et dans le construct aussi. Du coup il lui arrive quoi ?
public function __construct(\Iterator $iterator, $regex ) {
parent::__construct($iterator);around $this->regex = $regex;around
}
Et je viens de tester dans la Class RecursiveFilenameFilter dans la function accept() j'ai bien mes deux chaines de caractères. Promis! :)
Et je peux même te dire qu'elle return true;
Ok j'ai peut être trouvé le pourquoi de la chose. Enfaite il manque un argument mais seulement à partir de la deuxieme iteration. Et je pense que c'est $regex qui n'est pas passé dans la fonction à la deuxieme iteration.
Comment je peux en être sur ?