Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Metoda z parametrami POST czy bez
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Cześć,
Jak lepiej napisać metodę?
Opcja 1:
  1. public function insertNewProduct(string $sku, string $name, string $price, string $productType)
  2. {
  3. $db->query("INSERT INTO `product` (`id`, `name`) VALUES (null, '$name')";);
  4. $db->bind(':name', $name);
  5. $db->execute();
  6. //ciąg dalszy tutaj jest zbędny
  7. }
  8.  
  9. //później wywołanie metody:
  10. $productObject->insertNewProduct($_POST['sku'], $_POST['name'], $_POST['price'], strtolower($_POST['productType']));


Opcja 2:
  1. public function insertNewProduct()
  2. {
  3. $name = (string) $_POST['name'];
  4. $selectedType = (string) $_POST['productType'];
  5. $sku = (string) $_POST['sku'];
  6. $price = (string) $_POST[price];
  7. $db->query("INSERT INTO `product` (`id`, `name`) VALUES (null, '$name')";);
  8. $db->bind(':name', $name);
  9. $db->execute();
  10. //ciąg dalszy tutaj jest zbędny
  11. }
  12.  
  13. //później wywołanie metody:
  14. $productObject->insertNewProduct();

Obstawiam opcję 1 za lepszą. Mam rację?


Halo, ktoś, odpowie?
viking
  1. public function insertNewProduct(Product $product)
  2. i Product zawiera właściwości produktu
sadistic_son
Czy chodzi Ci o to żeby produkt był oddzielna klasą (w tym wypadku abstrakcyjną?) i zawierał pola produktu? I potem odwołuję się do klasy Product? Nie wiem czy dobrze rozumuję.
sadistic_son
No to mnie ukochałeś. Dwa razy to przeczytałem (język ang. to nie problem) i nie łapię sad.gif
viking
Co ci mogę powiedzieć. Czytaj. To forum nie powinno być źródłem jedynej wiedzy. W 5s tego nie poznasz ale rzucam tematy które mogą się przydać.
I nie, dlaczego Product miałby być klasą abstrakcyjną?
sadistic_son
Ok, dzięki za zapodanie tematu, ale to jeszcze nie mój poziom.

Dlaczego klasa Product powinna być abstrakcyjna? No cóż... mam to narzucone:
"Z OOP musisz zademonstrować konstrukcję kodu w sensownych klasach, które rozszerzają (dziedziczą) jedna drugą, więc chcielibyśmy zobaczyć klasę abstrakcyjną dla głównej logiki produktu. Zainteresuj się polimorfizmem"

com
Te zadanie jest bez sensu, tak sie nie powinno towrzyc kodu jak narzucili wink.gif
vokiel
Skoro chcą tak utrudniać to pogrupuj produkty w jakieś mniejsze rodzaje i zrób abstrakcyjna klasę główną, np:

  1. abstract class Product
  2. {
  3. protected string $sku;
  4.  
  5. public function getSku(): string
  6. {
  7. return $this->sku;
  8. }
  9.  
  10. public function setSku(string $sku): self
  11. {
  12. $this->sku = $sku;
  13.  
  14. return $this;
  15. }
  16. }


  1. class namedProduct extends Product
  2. {
  3. protected string $name;
  4.  
  5. public function getName(): string
  6. {
  7. return $this->name;
  8. }
  9.  
  10. public function setName(string $name): self
  11. {
  12. $this->name = $name;
  13.  
  14. return $this;
  15. }
  16. }


Potem jakieś repozytorium dla produktów
  1. class ProductRepository
  2. {
  3. public function add(Product $product)
  4. {
  5. // Jakiś zapis do bazy
  6. }
  7. }
  8.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.