Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Obiektowość w funkcji
Forum PHP.pl > Forum > Przedszkole
Fred1485
Witam, stworzyłem sobie klasę w której wszystkie operacje na plikach i katalogach będę robił, taki kod mam

  1. class files {
  2.  
  3. public function check_file($filename = false) {
  4.  
  5. if($filename) {
  6.  
  7. $root_path = $_SERVER['DOCUMENT_ROOT']. '/';
  8. $filename = $root_path.$filename;
  9.  
  10. if(file_exists($filename)) {
  11.  
  12. return true;
  13. }
  14. return false;
  15. }
  16. }
  17. }


Działać działa bez problemu żadnego, ale mam taką prośbę czy mógłby ktoś powiedzieć czy do tej prostej operacji można jeszcze więcej obiektowości wtrącić? biggrin.gif
Chcę wyciskać tyle ile się da wink.gif
b4rt3kk
Tak można, root może być property klasy. Możesz też dodać metodę, którą ustawiasz root, np.

  1. public function setRoot($root = null) {
  2. $this->root = ($root === null ? $_SERVER['DOCUMENT_ROOT'] : $root) . '/';
  3.  
  4. return $this;
  5. }
Fred1485
  1. ($root === null ? $_SERVER['DOCUMENT_ROOT'] : $root) . '/';


O co chodzi z tym pytajnikiem? biggrin.gif Chętnie się tego dowiem i o tym poczytam
rad11
Skrocony warunek if.
Fred1485
I w OOP takie skrócone if powinienem stosować?
rad11
To nie ma nic wspolnego z OOP. Koledze chodzilo bardziej o to abys zrobil oddzielna metoda ktora zwroci Ci root i abys mogl to uzyc wszedzie bez powtarzania kodu.
Fred1485
Fakt zrobię tak szybciej i lepiej będzie potem to ponownie wykorzystaćwink.gif
wolguy
to z tym znakiem zapytania nazywa się operator trójkowy
Fred1485
@EDIT

Odbiegając od tematu.

Oglądalem i czytałem poraniki na temat oop i w niektórych ludzie robią tak:

  1.  
  2. class xyz {
  3.  
  4. public $zmienna; //najpierw definuiją zmienne które w reszcie kodu będą używane a nie tworzą w "locie"
  5. public $zmienna2;
  6.  
  7. //reszta kodu
  8. }
  9.  
rad11
Istnieje takie cos tylko jeszcze napisal bys co masz zamiar z tym zrobic? haha.gif
b4rt3kk
Cytat(Fred1485 @ 25.03.2015, 19:44:37 ) *
@EDIT

Odbiegając od tematu.

Oglądalem i czytałem poraniki na temat oop i w niektórych ludzie robią tak:

  1.  
  2. class xyz {
  3.  
  4. public $zmienna; //najpierw definuiją zmienne które w reszcie kodu będą używane a nie tworzą w "locie"
  5. public $zmienna2;
  6.  
  7. //reszta kodu
  8. }
  9.  


To nie są de facto zmienne, tylko właściwości obiektu. Coś w rodzaju zmiennej globalnej dostępnej wewnątrz klasy i klas dziedziczących. By łatwiej to zrozumieć, taki przykład:

  1. class test {
  2. protected $options;
  3.  
  4. public function setOption($name, $value) {
  5. $this->options[$name] = $value;
  6. }
  7.  
  8. public function doSmg1()
  9. {
  10. if (isset($this->options['costam']) && $this->options['costam'] === true) {
  11. // jakis blok kodu
  12. }
  13. }
  14.  
  15. public function doSmg2()
  16. {
  17. if (isset($this->options['costam']) && $this->options['costam'] === true) {
  18. // jakis inny blok kodu
  19. }
  20. }
  21. }


Lub inaczej:

  1. class test {
  2. protected $con;
  3.  
  4. public function __construct($con) {
  5. $this->con = $con; // uchwyt polaczenia z baza danych
  6. }
  7.  
  8. public function get() {
  9. $this->con->query($query); // uzycie uchwytu i wykonanie zapytania
  10. }
  11. }
Fred1485
Ale powinienem ich używać czy nie tak na chłopski rozum? smile.gif
com
tak bo to są pola klasy, brakuje Ci wiedzy na temat podstaw budowy klas.
Aby wykorzystać wewnątrz klasy jakieś pola i na nich operować w rożnych jej metodach musisz je stworzyć. To co zadeklarujesz w danej metodzie jest tylko w niej i w innych poza nią nie masz do tego dostępu, a klasy po to są żeby operować na jednym polu w całej klasie tam gdzie to jest potrzebne a nie za każdym razem tworzyć nowe.
Fred1485
Takiej odpowiedzi oczekiwalem smile.gif próbuje to przyswoic po troche ale takie glupoty popelniam z braku wiedzy jeszcze
Pyton_000
To poczytaj podstawy OOP a potem bierz się do roboty
10log
Cytat(Fred1485 @ 25.03.2015, 18:58:16 ) *
Działać działa bez problemu żadnego, ale mam taką prośbę czy mógłby ktoś powiedzieć czy do tej prostej operacji można jeszcze więcej obiektowości wtrącić? biggrin.gif
Chcę wyciskać tyle ile się da wink.gif


Nie bardzo widzę celowość takiego pakowanie obiektowości do jakiegoś prostego kawałka kodu ale jak już musisz smile.gif to możesz zrobić interfejs i w klasie go zaimplementować np.:

  1. interface Loader
  2. {
  3. public function read();
  4. }
  5.  
  6. class FileLoader implements Loader
  7. {
  8. public functiom read()
  9. {
  10. }
  11. }
  12.  
Fred1485
Trochę za OOP się teraz biorę i tak próbuję zrobić jak najbardziej obiektowo biggrin.gif
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.