@@ -293,6 +293,15 @@ public function addBook(Books $book){
293
293
public function getBooks (){
294
294
return $ this ->books ;
295
295
}
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
+ }
296
305
}
297
306
298
307
class UserManager{
@@ -305,6 +314,15 @@ public function addUser(UsersLibrary $user){
305
314
public function getUsers (){
306
315
return $ this ->users ;
307
316
}
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
+ }
308
326
}
309
327
310
328
class LoanManager{
@@ -320,6 +338,7 @@ public function returnBook(UsersLibrary $user, Books $book){
320
338
foreach ($ this ->loans as $ key => $ loan ) {
321
339
if ($ loan ->getUserId () === $ user ->getId () && $ loan ->getBookTitle () === $ book ->getTitle ()) {
322
340
unset($ this ->loans [$ key ]);
341
+ break ;
323
342
}
324
343
}
325
344
}
@@ -332,3 +351,79 @@ public function getLoans(){
332
351
$ myBookManager = new BookManager ();
333
352
$ myUserManager = new UserManager ();
334
353
$ 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