online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
<?php /** * PHP Challenge vol.7 - Pan od informatyki * * Napisz klasę która z imion ze zmiennej $data wyfiltruje imiona zaczynające się * na wybraną literę, oraz zwróci tablicę imion ze zmienioną pierwszą literę na wielką * * Proszę o podział kodu na klasy z zachowaniem zasad SOLID, a szczególnie * Single responsibility principle (Zasada jednej odpowiedzialności) */ require('./autoloader.php'); $data = 'judyta; julia; kamila; karina; laura; lena; magdalena; maja; nadia; natalia; olga; oliwia; pamela; patrycja; regina; renata; sabina; sandra; tamara; tatiana; urszula; weronika; wiesława; zofia; zuzanna; Żaneta; adam; bartłomiej; bartosz; cezary; cyprian; damian; daniel; edward; emanuel; fabian; feliks; gabriel; gerard; henryk; herbert; ignacy; igor; jacek; jakub; kacper; kajetan; lech; leon; maciej; maksymilian; nikodem; norbert; olaf; olgierd; patryk; paweł; radosław; rafał; sebastian; seweryn; tadeusz; teodor; wacław; waldemar; zdzisław; zygmunt'; // Aby rozpocząć edycję kliknij w przycisk powyżej "Fork this" // Aby uruchomić moje rozwiązanie należy odkomentować poniższą linijkę // require('rozwiazanie.php');
<?php spl_autoload_register(function($class){ $classArr = explode('\\', $class, 2); if(isset($classArr[1])){ $class = str_replace('\\', '/', $classArr[1]); $namespce = [ 'App' => __DIR__.'/', ]; if(isset($namespce[$classArr[0]])) { $path = $namespce[$classArr[0]]; $file = $path.$class.'.php'; if (file_exists($file)) { require_once($file); } } } }, true, true);
<?php use App\IndexController; /** * Rozwiązanie */ $controller = new IndexController(); $out = $controller->indexAction('t', $data); var_dump($out);
<?php namespace App; class NamesParser { /** * Główna funkcja zwracająca listę wyfiltrowanych imion */ public function getNamesArray($names){ return $this->getNamesListFromString($names); } /** * Funkcja przetwarzająca ciąg imion w tablicę, jednocześnie usuwając białe znaki z początku i końca imienia */ private function getNamesListFromString($data, $separator = ';'){ $data = explode($separator, $data); foreach($data as &$item){ $item = trim($item); } return $data; } }
<?php namespace App; use App\NamesParser; use App\NameFormater; use App\NameFilter; use App\NamesService; class IndexController { /** * Główna akcja */ public function indexAction($firstLetter, $names){ $service = new NamesService($names, new NamesParser(), new NameFilter(), new NameFormater()); return $service->getNames($firstLetter); } }
<?php namespace App; class NameFormater { /** * Funkcja zmieniająca pierwszą literę imienia na wielką */ public function upperFirstLetter($data){ array_walk($data, function(&$item){ $item = ucfirst($item); }); return $data; } }
<?php namespace App; class NamesService { private $names; private $namesParser; private $nameFilter; private $nameFormater; public function __construct($names, $parser, $filter, $formater){ $this->names = $names; $this->namesParser = $parser; $this->nameFilter = $filter; $this->nameFormater = $formater; } /** * Główna funkcja zwracająca listę wyfiltrowanych imion */ public function getNames($firstLetter){ $arr = $this->namesParser->getNamesArray($this->names); $arr = $this->nameFilter->filterByFirstLetter($firstLetter, $arr); return $this->nameFormater->upperFirstLetter($arr); } }
<?php namespace App; class NameFilter { /** * Funkcja filtrująca listę i zostawiająca tylko imiona zaczynające się na wybraną literę */ public function filterByFirstLetter($firstLetter, $names){ $list = array_filter($names, function($item) use ($firstLetter) { return strtoupper($item[0]) == strtoupper($firstLetter); }); return $list; } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue