Untitled
unknown
plain_text
a year ago
7.5 kB
5
Indexable
<?php
namespace Classes;
class Book
{
private int $id;
private string $title;
private float $price;
private array $authors = [];
function __construct(int $id, string $title, float $price, array $authors)
{
$this->id = $id;
$this->title = $title;
$this->price = $price;
$this->authors = $authors;
}
public function getAuthors()
{
return $this->authors;
}
public function getPrice()
{
return $this->price;
}
public function getTitle()
{
return $this->title;
}
public function getId()
{
return $this->id;
}
}
?>
<?php
session_start();
$server = "localhost";
$username = "root";
$password = "";
$dbname = "teszt1";
$conn = new mysqli($server, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo "Csatlakozas az adatbazishoz sikeres!";
}
if (isset($_POST["submit"])) {
$title = $_POST["title"];
$price = $_POST["price"];
$authors = $_POST["authors"];
$sql = "INSERT INTO books (title, price, authors) VALUES ('$title', '$price', '$authors')";
if ($conn->query($sql) === TRUE) {
echo "Sikeres hozzaadas az adatbazishoz!";
$_SESSION["title"] = $title;
$_SESSION["price"] = $price;
$_SESSION["authors"] = $authors;
header("Location: list.php");
$conn->close();
}
}
?>
<form action="book_form.php" method="POST">
<label for="title">Title:</label>
<input type="text" name="title" required></input>
<label for="title">Price:</label>
<input type="number" name="price" required></input>
<label for="title">Authors:</label>
<input type="text" name="authors" required></input>
<input type="submit" name="submit"></input>
</form>
<?php
namespace Classes;
interface Borrowable
{
public function borrowBook(Book $book);
public function returnBook(Book $book);
}
?>
<?php
namespace Classes;
class Library
{
private array $books = [];
private array $users = [];
public function getBooks()
{
return $this->books;
}
public function getUsers()
{
return $this->users;
}
public function addBook(Book $book)
{
$this->books[] = $book;
}
public function addUser(User $user)
{
$this->users[] = $user;
}
public function searchBooksByAuthor($author)
{
$sort = function($book) use ($author)
{
$authors = $book->getAuthors();
return in_array($author, $authors);
};
return array_filter($this->books, $sort);
}
public function listBooksAsJson()
{
$list = [];
foreach ($this->books as $book) {
$list[] = [
"id" => $book->getId(),
"title" => $book->getTitle(),
"price" => $book->getPrice(),
"authors" => $book->getAuthors(),
];
}
return json_encode($list, JSON_PRETTY_PRINT);
}
public function calculateTotalBookPrice()
{
$jsonArray = $this->listBooksAsJson();
$array = json_decode($jsonArray, true);
$totalprice = 0;
foreach ($array as $book) {
$totalprice += $book['price'];
}
return $totalprice;
}
}
?>
<?php
session_start();
echo "<h1>Newly Added Book</h1>";
echo "Title: {$_SESSION["title"]}" . "<br>";
echo "Authors: {$_SESSION['authors']}" . "<br>";
echo "Price: {$_SESSION['price']}" . "<br>";
?>
<?php
namespace Classes;
include_once "Borrowable.php";
include_once "User.php";
include_once "Book.php";
include_once "Library.php";
use Exception;
class Test
{
function run()
{
$user1 = new User(1, "First");
$user2 = new User(2, "Second");
$book1 = new Book(1, "Sdsds", 12.10, ["Author First"]);
$book2 = new Book(2, "Asd", 11.20, ["Author Second"]);
$book3 = new Book(3, "Dspwks", 18.10, ["Author Third"]);
$book4 = new Book(4, "Pdsowkskd", 2.10, ["Author Fourth"]);
$library = new Library();
$library->addBook($book1);
$library->addBook($book2);
$library->addBook($book3);
$library->addBook($book4);
$library->addUser($user1);
$library->addUser($user2);
$user1->borrowBook($book1);
echo "<br>";
try {
$user1->returnBook($book1);
echo "<br>";
} catch (Exception $e) {
echo "Hiba: " . $e->getMessage();
echo "<br>";
}
try {
$user2->borrowBook($book1);
echo "<br>";
$user2->borrowBook($book2);
echo "<br>";
$user2->borrowBook($book3);
echo "<br>";
$user2->borrowBook($book4);
} catch (Exception $e) {
echo "Hiba: " . $e->getMessage();
}
try {
$user1->returnBook($book4);
echo "<br>";
} catch (Exception $e) {
// Hibaüzenet kiírása
echo "Hiba: " . $e->getMessage();
echo "<br>";
}
echo "<br>";
$usersArray = $library->getUsers();
foreach($usersArray as $user) {
echo "User: {$user->getName()}" . "<br>";
$books = $user->getBorrowedBooks();
foreach ($books as $book) {
echo "Borrowed Books: " . $book->getTitle() . ", ";
}
echo "<br>";
}
echo "Books by: 'Author First' ";
$booksByAuthor = $library->searchBooksByAuthor('Author First');
foreach($booksByAuthor as $book) {
echo "<br>";
echo $book->getTitle();
echo "<br>";
}
echo $library->listBooksAsJson();
echo "<br>";
echo $library->calculateTotalBookPrice();
echo "<br>";
}
}
$test = new Test();
$test->run();
?>
<?php
namespace Classes;
use Exception;
class User implements Borrowable
{
private int $id;
private string $name;
private array $borrowedBooks = [];
function __construct(int $id, string $name)
{
$this->id = $id;
$this->name = $name;
}
public function getBorrowedBooks()
{
return $this->borrowedBooks;
}
public function getName()
{
return $this->name;
}
public function borrowBook(Book $book)
{
if (count($this->borrowedBooks) >= 3) {
throw new Exception("Maximum 3 konyv kolcsonozheto!");
} else {
echo "{$this->name} borrowed: " . $book->getTitle();
$this->borrowedBooks[] = $book;
}
}
public function returnBook(Book $book)
{
$index = array_search($book, $this->borrowedBooks, true);
if ($index !== false) {
echo "{$this->name} returned: " . $book->getTitle() ;
unset($this->borrowedBooks[$index]);
$this->borrowedBooks = array_values($this->borrowedBooks); // Újraindexelés
} else {
throw new Exception("A könyv nincs kikölcsönözve!");
}
}
}
?>Editor is loading...
Leave a Comment