Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] dzialanie klas
Forum PHP.pl > Forum > Przedszkole
sakul55
troszke sobie poczytalem i probuje pisac obiektowo. zrobilem cos takiego i dziala poprawnie, ale sam sie zastanawiam czemu i czy to jest dobre tongue.gif

add.php:
  1. require_once 'model.php';
  2. $conn = new conn();
  3.  
  4. if(isset($_POST['submit'])){
  5.  
  6. $baza->add($_POST['title'], $_POST['author'])
  7. } else {
  8. <form action="add.php" method="POST">
  9. <input type="text" name="title">
  10. <input type="text" name="author">
  11. <input type="hidden" name="hidden">
  12. <input type="submit" name="submit" value="Add">

model.php:
  1. class conn {
  2. function add($_POST['title'], $_POST['author']) {
  3.  
  4. echo $_POST['hidden']; // dziala
  5.  
  6. }
  7. }


skoro nie przesylam przez add $_POST['hidden'] to dlaczego moge to potem odczytac w funkcji? na jakiej to zasadzie dziala? chyba jednak to jakos zle zrobilem skoro to przechodzi
darko
$_POST, $_GET, $_REQUEST, $_SERVER, $_COOKIE oraz $_ENV to są tablice superglobalne, które są dostępne w każdym miejscu kodu. Dlatego nie ma konieczności bezpośredniego przekazywania tych tablic do metod, chociaż kod wtedy staje się czytelniejszy,
sakul55
dzieki juz rozumiem smile.gif

a jeszcze mam jedno pytanie

  1. <?php
  2.  
  3. try
  4. {
  5. $pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  6. echo 'Połączenie nawiązane!';
  7. }
  8. catch(PDOException $e)
  9. {
  10. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  11. }
  12. ?>

zrobione mam funkcje do laczenia sie z baza, dodawania do bazy i edytowania. i teraz kazda z tych funkcji powinna byc objeta blokiem TRY CATCH z osobna, czy jako calosc?

mam zrobic tak:

index.php
  1. <?php
  2.  
  3. try
  4. {
  5. $conn->conn();
  6.  
  7. $conn->add(title, author);
  8.  
  9. }
  10. catch(PDOException $e)
  11. {
  12. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  13. }
  14. ?>


czy kazda z tych funkcji CONN, ADD i EDIT mam ubierac w blok TRY CATCH?
darko
Nie ma takiej konieczności, wystarczy objąć blokiem try catch tylko funkcję łączącą się z bazą, jeżeli połączenia nie będzie zostanie rzucony i wyłapany wyjątek. Metody wyciągające dane w przypadku błędu nie rzucą wyjątku, a zwrócą pustą tablicę lub wartość false.
sakul55
dzieki smile.gif
a to jeszcze przy okazji mam pytanie. jak sie powinno uzywac HTML piszac obiektowo?

jak mam np formularz to przed nim zakonczyc php ?> i zaczac pisac normalnie w HTML, czy wszystko ma byc w echo "<form> itd </form>"? rozumiem, ze do pogrubiania zamiast <b> musze uzywac CSS? a co z U i I? a <br /> mozna normalnie uzywac? bo czytalem na forum, ze ktos ma zastrzezenia, ale moze chodzilo o zwykle <br> tongue.gif
darko
"Obiektowo" masz tylko jedno miejsce to mieszania kodu php i html i są tą templatey phtml i dokładnie tak, jak opisałeś wyskakujesz z php i wskakujesz do html itd. Tag <br/> jest tagiem samozamykającym i wymaga zamknięcia.
sakul55
no tak, mam zrobiony plik layout.php w html i tam wrzucam przez np <?php include 'edit.php' ?>, ale to co mam w edit.php tez moge pisac na czysto w HTML czy przez echo ?
a co z tym uzywaniem B, U i I? zamiast B CSS, a U i I moge normalnie?
darko
Nie wiem, co dokładnie rozumiesz pod pojęciem "obiektowo", ale może najpierw poznaj podstawy wzorców projektowych? W projektach opartych o wzorce trójwarstwowe (sprytnie ominąłem kwestie czy mvc czy nie tongue.gif) nie robisz po prostu w dowolnym miejscu: echo $data. To jest zresztą temat rzeka i miejsce licznych sporów nt. mvc, hmvc, mvp i różnic między nimi itd. Poczytaj przyklejony temat.
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.