• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obiektowa farma w php

Object Storage Arubacloud
0 głosów
196 wizyt
pytanie zadane 4 listopada 2017 w PHP przez kordix Gaduła (3,910 p.)
W ramach edukacji chciałem zrobić taki program inwentaryzacyjny i chciałem w nim wykorzystać klasy i obiekty. Chciałem utworzyć klasę Zwierze które ma imie, gatunek, wiek itp. jak w kursie obiektowym C++  u Zelenta. Zamiast cin-ów i cout-ów zrobiłbym do tego formularz. Każde zwierze mogłoby się pokazywać w postaci obrazka symbolizującym gatunek, po kliknięciu na obrazek pojawiałyby się informacje o danym obiekcie.

Jednak ni w ząb nie widzę tutaj zastosowania obiektówki. Najbardziej co mi nachodzi na myśl to zrobić tabelę w SQL w stylu "id, gatunek, nazwa, wiek" itd. Robiłem już taką prostą inwentaryzacje, trzeba by było pokombinować żeby to się pojawiło w postaci obrazków.

Gdyby każde zwierzę miało być przedstawicielem klasy "Zwierze" musiałbym już z góry ustalić w kodzie ile jest instancji, nie ma opcji żeby dodawać obiekty w dowolnych ilościach, przez interakcję z użytkownikiem.

Wiem że jest pierdyliard poradników o obiektówce, ale wszystko się kręci wokół hermetyzacji, dziedziczenia i poliformizmu + interfejsy i klasy abstrakcyjne.  Jednak nie mam pomysłu na program który by jakoś fajnie wykorzystywał klasy, w jakimś konkretnym celu, a nie dla obiektówki samej w sobie.

Macie może pomysł na jakiś dydaktyczny program dla obiektówki w PHPie?

2 odpowiedzi

+1 głos
odpowiedź 4 listopada 2017 przez CenterPL Pasjonat (19,070 p.)
Nie wiem czy dobrze rozumiem, ale wydaje mi się, że bardzo płytko pojmujesz pojęcie programowania obiektowego. To, że używasz OOP wcale nie znaczy, że obiektem w systemie będzie "Zwierze" albo "Płód rolny" czy cokolwiek takiego. Obiektem będzie wszystko. I to bardzo dosłownie. Ciężko to wyjaśnić, ale spróbuję. W takim systemie jaki chcesz stworzyć możesz mieć klasy takie jak:

- user
- inventory (wraz z type, np zwierze, pojazd itp)

i to będą obiekty przechowywane w bazie danych, potrzebna więc jakaś warstwa komunikacji z bazą - obiektem będzie połączenie z bazą, obiektem będzie każde zapytanie.

Dalej, obiektem będzie widok dla użytkownika, formularz czy cokolwiek.

Gdyby zagłębić się może w CQRS to możesz mieć obiekty komend (command), obiekty zapytań (query). Po prostu wszystko praktycznie będzie obiektem.

Bo - stworzenie sobie klasy zwierze i operowanie w aplikacji tak jak w programowaniu strukturalnym, nie jestem programowaniem obiektowym. I ogólnie pomysł masz dobry, możesz zrobić sobie właśnie taką aplikację, tylko musisz poszerzyć chyba wiedzę. Zobacz sobie wzorzec MVC na początek, popatrz na przykładowe aplikacje na GitHubie, cokowliek.
+1 głos
odpowiedź 4 listopada 2017 przez Lrror Bywalec (2,720 p.)

Klasy od tak nie zostały wymyślone. Ja osobiście najczęściej używam i poto by mieć porządek w kodzie.
Tu masz jakiś przykład prosty:
 

class Pies {

 public $name;
 public $hp = 100;
 public $damage = 25;
 public $speed = 50;

function __construct($name){
  this.name = $name;
 }

 public function atak($pies){

 $pies->hp-=10;
  
 } 
 
 public function regeneracja(){
  this.hp+=10;
 }
}

$Azor = new Pies("Azor");
$Pompon = new Pies("Pompon");

$Azor->atak($Pompon);

Co do php to obiekty nie są trwałe jak i zmienne. Bo powstają tylko w chwili rządania odpowiedzi od serwera i w tej samej chwili zostają usunięte.

A jak chcesz przykład jakiś bardziej z życia to np: (przykład z jakiś moich plików)

 

class Server {
	
	public $online = array();
	public $players = array();
	public $messages = "";
	
	function __construct(){
		
		global $db;
		
		$qry = $db->prepare("SELECT * FROM `players` WHERE `last_activ` >= ?");
		$qry->execute(array(time() - 3600));
		$online = $qry->fetchAll();
		$qry->execute(array(0));
		$players = $qry->fetchAll();
		$qry->closeCursor();
	}
	
	public function check_email($email){
		
		global $db;
		
		$qry = $db->prepare("SELECT `id` FROM `players` WHERE `email` = ?");
		$qry->execute(array($email));
		if($qry->rowCount() == 0){
			return true;
		}
		else {
			return false;
		}
		$qry->closeCursor();
	}
}

 

Podobne pytania

0 głosów
1 odpowiedź 476 wizyt
pytanie zadane 7 lipca 2022 w PHP przez matilogias Obywatel (1,550 p.)
+1 głos
1 odpowiedź 680 wizyt
pytanie zadane 23 kwietnia 2021 w PHP przez Tukan Nowicjusz (190 p.)
0 głosów
1 odpowiedź 487 wizyt
pytanie zadane 9 września 2020 w PHP przez Młody programista Obywatel (1,200 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...