Skip to content

Commit 98e153c

Browse files
committed
#26 - php
Avances
1 parent 2aeef14 commit 98e153c

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

Roadmap/26 - SOLID SRP/php/miguelex.php

+95
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,15 @@ public function addBook(Books $book){
293293
public function getBooks(){
294294
return $this->books;
295295
}
296+
297+
public function findBookByTitle($title){
298+
foreach ($this->books as $book) {
299+
if ($book->getTitle() === $title) {
300+
return $book;
301+
}
302+
}
303+
return null;
304+
}
296305
}
297306

298307
class UserManager{
@@ -305,6 +314,15 @@ public function addUser(UsersLibrary $user){
305314
public function getUsers(){
306315
return $this->users;
307316
}
317+
318+
public function findUserById($id){
319+
foreach ($this->users as $user) {
320+
if ($user->getId() === $id) {
321+
return $user;
322+
}
323+
}
324+
return null;
325+
}
308326
}
309327

310328
class LoanManager{
@@ -320,6 +338,7 @@ public function returnBook(UsersLibrary $user, Books $book){
320338
foreach ($this->loans as $key => $loan) {
321339
if ($loan->getUserId() === $user->getId() && $loan->getBookTitle() === $book->getTitle()) {
322340
unset($this->loans[$key]);
341+
break;
323342
}
324343
}
325344
}
@@ -332,3 +351,79 @@ public function getLoans(){
332351
$myBookManager = new BookManager();
333352
$myUserManager = new UserManager();
334353
$myLoanManager = new LoanManager();
354+
355+
do {
356+
echo "\n\nVamos a mostrar un ejemplo de una clase que no cumple el SRP. En este caso es una clase que gestiona una biblioteca\n\n";
357+
echo "";
358+
echo "1. Añadir libro\n";
359+
echo "2. Añadir usuario\n";
360+
echo "3. Prestar libro\n";
361+
echo "4. Devolver libro\n";
362+
echo "5. Mostrar libros\n";
363+
echo "6. Mostrar usuarios\n";
364+
echo "7. Mostrar préstamos\n";
365+
echo "8. Salir\n";
366+
echo "";
367+
echo "Elija una opción: ";
368+
369+
$option = readline();
370+
echo "";
371+
372+
switch ($option) {
373+
case 1:
374+
echo "Título: ";
375+
$title = readline();
376+
echo "Autor: ";
377+
$author = readline();
378+
echo "Copias: ";
379+
$copies = readline();
380+
$myBookManager->addBook(new Books($title, $author, $copies));
381+
break;
382+
case 2:
383+
echo "Nombre: ";
384+
$name = readline();
385+
echo "ID: ";
386+
$id = readline();
387+
echo "Email: ";
388+
$email = readline();
389+
$myUserManager->addUser(new UsersLibrary($name, $id, $email));
390+
break;
391+
case 3:
392+
echo "ID del usuario: ";
393+
$userId = readline();
394+
echo "Título del libro: ";
395+
$bookTitle = readline();
396+
$user = $myUserManager->findUserById($userId);
397+
$book = $myBookManager->findBookByTitle($bookTitle);
398+
if ($user && $book) {
399+
$myLoanManager->loanBook($user, $book);
400+
} else {
401+
echo "Usuario o libro no encontrado.\n";
402+
}
403+
break;
404+
case 4:
405+
echo "ID del usuario: ";
406+
$userId = readline();
407+
echo "Título del libro: ";
408+
$bookTitle = readline();
409+
$user = $myUserManager->findUserById($userId);
410+
$book = $myBookManager->findBookByTitle($bookTitle);
411+
if ($user && $book) {
412+
$myLoanManager->returnBook($user, $book);
413+
} else {
414+
echo "Usuario o libro no encontrado.\n";
415+
}
416+
break;
417+
case 5:
418+
print_r($myBookManager->getBooks());
419+
break;
420+
case 6:
421+
print_r($myUserManager->getUsers());
422+
break;
423+
case 7:
424+
print_r($myLoanManager->getLoans());
425+
break;
426+
}
427+
428+
} while (($option != 8));
429+

0 commit comments

Comments
 (0)