Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Metoda z parametrami POST czy bez
sadistic_son
post
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


  1. public function insertNewProduct(Product $product)
  2. i Product zawiera właściwości produktu
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował sadistic_son 10.01.2023, 13:45:59
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


https://draganatanasov.com/2022/11/12/data-...objects-in-php/
Go to the top of the page
+Quote Post
sadistic_son
post
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


No to mnie ukochałeś. Dwa razy to przeczytałem (język ang. to nie problem) i nie łapię (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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ą?
Go to the top of the page
+Quote Post
sadistic_son
post
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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"

Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Te zadanie jest bez sensu, tak sie nie powinno towrzyc kodu jak narzucili (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
vokiel
post
Post #9





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 03:08