Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]PHP obiektowo
Forum PHP.pl > Forum > Przedszkole
devil1051
Moje początki z PHP... smile.gif

Mam plik (przedstawie tylko body, żeby nie zaśmiecać)

first
  1. <form action="first.php" method="GET">
  2. One: <input type=text name="one"/><br/>
  3. Two: <input type=text name="two"/><br/>
  4. <input type=submit value="Send"/>
  5. </form>
  6. One: <?php echo $_GET['one']?><br>
  7. Two: <?php echo $_GET['two']?><br>
  8. <?php
  9. $one = (int)$_GET['one'];
  10. $two = (int)$_GET['two'];
  11. echo $one;
  12. echo "<br/>";
  13. echo $two;
  14. echo "<br/>";
  15. echo $one+$two+10;
  16. ?>


I teraz mam 3 pytania
1.Dane, które odbieram chciałbym użyć i obiektowo troche na nich namieszać. W którym miejscu mogę tworzyć nowe klasy, abym mógł je używać (można zrobić to w innych plikach?)
2.Czy mogę w jakiś sposób użyć tylko raz wstawek <?php i ?> czy muszę za każdym razem gdy chcę wypisać coś na stronie "wychodzić" z nich?
3.Chciałbym ukryć drugą część pliku (od przycisku send), aby nie była pokazywana zanim się go nie naciśnie.
KsaR
Cytat(devil1051 @ 29.09.2015, 23:30:26 ) *
Moje początki z PHP... smile.gif

Mam plik (przedstawie tylko body, żeby nie zaśmiecać)

first
  1. <form action="first.php" method="GET">
  2. One: <input type=text name="one"/><br/>
  3. Two: <input type=text name="two"/><br/>
  4. <input type=submit value="Send"/>
  5. </form>
  6. One: <?php echo $_GET['one']?><br>
  7. Two: <?php echo $_GET['two']?><br>
  8. <?php
  9. $one = (int)$_GET['one'];
  10. $two = (int)$_GET['two'];
  11. echo $one;
  12. echo "<br/>";
  13. echo $two;
  14. echo "<br/>";
  15. echo $one+$two+10;
  16. ?>


I teraz mam 3 pytania
1.Dane, które odbieram chciałbym użyć i obiektowo troche na nich namieszać. W którym miejscu mogę tworzyć nowe klasy, abym mógł je używać (można zrobić to w innych plikach?)
2.Czy mogę w jakiś sposób użyć tylko raz wstawek <?php i ?> czy muszę za każdym razem gdy chcę wypisać coś na stronie "wychodzić" z nich?
3.Chciałbym ukryć drugą część pliku (od przycisku send), aby nie była pokazywana zanim się go nie naciśnie.

1 mozna
2 mozesz
3 uzywaj isset().

  1. if (isset($_GET['one'], $_GET['two']))
  2. {
  3. # wyslano
  4. }
  5. else
  6. {
  7. # tu cos jak nie wyslano
  8. }

devil1051
A mógłbyś mi jakoś bardziej zobrazować odpowiedź do pytania nr 1?
markonix
Po co na siłę pchać dane z formularza do obiektu? Jaki to miałoby mieć cel w Twoim przypadku?
Geniesis
Może wykorzystać obiekt np. do walidacji danych po stronie serwera,
dla przykładu one może być tylko tekstem, two może być tylko liczbą
wtedy:

Sposób pierwszy używania zmiennych (w tym konkretnym przypadku nie jest on preferowany)
Validator.class.php

  1. <?php
  2.  
  3. class Validator
  4. {
  5. private $one;
  6.  
  7. private $two
  8.  
  9. public function __construct($one, $two)
  10. {
  11. $this->one = $one;
  12. $this->two = $two;
  13. }
  14.  
  15. public function text()
  16. {
  17. if (preg_math(..., $this->one)) {
  18. return true;
  19. } else {
  20. return 'err.text.format';
  21. }
  22. }
  23.  
  24. public function number()
  25. {
  26. if (preg_math(..., $this->two)) {
  27. return true;
  28. } else {
  29. return 'err.number.format';
  30. }
  31. }
  32. }


Wywołanie:
  1. require_once ('/Validator.class.php');
  2. $aResultValidation = array();
  3.  
  4. $validator = new Validator($_GET['one'], $_GET['two']);
  5. $aResultValidation['one'] = $validator->text();
  6. $aResultValidation['two'] = $validator->number();


Sposób drugi:
  1. class Validator
  2. {
  3. public function text ($data)
  4. {
  5. if (preg_math(..., $data)) {
  6. return true;
  7. } else {
  8. return 'err.text.format';
  9. }
  10. }
  11.  
  12. public function number ($data)
  13. {
  14. if (preg_math(..., $data)) {
  15. return true;
  16. } else {
  17. return 'err.number.format';
  18. }
  19. }
  20. }

Wywołanie:
  1. require_once ('/Validator.class.php');
  2. $validator = new Validator();
  3. $aResultValidation = array();
  4.  
  5. $aResultValidation['one'] = $validator->text($_GET['one']);
  6. $aResultValidation['two'] = $validator->number($_GET['two']);

Każda klasa powinna być w osobnym pliku, czyli Validator w Validator.class.php, Mailer w Mailer.class.php itd.
Najlepiej podzielić to jeszcze na konkretne podfoldery:
validation <- klasy walidujące
database <- klasy wykorzystujące bazy danych
itd.

2.W przypadku wyświetlania nie używając gotowych systemów template można robić to za pomocą JavaScript (w pierw dane przekazać za pomocą AJAX).
com
@up sposób pierwszy nie ma sensu smile.gif
Tomplus
Na stronie wortal.php.pl są manuale dot. objektówki, przeczytaj i powinieneś coś się dowiedzieć.

A jak chcesz uczyć się, to polecam: https://www.codecademy.com i tam od samego początku można uczyć się PHP razem z objektowością.

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.