Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Obiektowość w funkcji
Fred1485
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


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ć? (IMG:style_emoticons/default/biggrin.gif)
Chcę wyciskać tyle ile się da (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


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. }
Go to the top of the page
+Quote Post
Fred1485
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


  1. ($root === null ? $_SERVER['DOCUMENT_ROOT'] : $root) . '/';


O co chodzi z tym pytajnikiem? (IMG:style_emoticons/default/biggrin.gif) Chętnie się tego dowiem i o tym poczytam
Go to the top of the page
+Quote Post
rad11
post
Post #4





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Skrocony warunek if.
Go to the top of the page
+Quote Post
Fred1485
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


I w OOP takie skrócone if powinienem stosować?
Go to the top of the page
+Quote Post
rad11
post
Post #6





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


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





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Fakt zrobię tak szybciej i lepiej będzie potem to ponownie wykorzystać(IMG:style_emoticons/default/wink.gif)

Ten post edytował Fred1485 25.03.2015, 19:34:02
Go to the top of the page
+Quote Post
wolguy
post
Post #8





Grupa: Zarejestrowani
Postów: 219
Pomógł: 10
Dołączył: 9.01.2005

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


to z tym znakiem zapytania nazywa się operator trójkowy
Go to the top of the page
+Quote Post
Fred1485
post
Post #9





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


@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.  
Go to the top of the page
+Quote Post
rad11
post
Post #10





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Istnieje takie cos tylko jeszcze napisal bys co masz zamiar z tym zrobic? (IMG:style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #11





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


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


Ten post edytował b4rt3kk 25.03.2015, 19:55:07
Go to the top of the page
+Quote Post
Fred1485
post
Post #12





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Ale powinienem ich używać czy nie tak na chłopski rozum? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
com
post
Post #13





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

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


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





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Takiej odpowiedzi oczekiwalem (IMG:style_emoticons/default/smile.gif) próbuje to przyswoic po troche ale takie glupoty popelniam z braku wiedzy jeszcze
Go to the top of the page
+Quote Post
Pyton_000
post
Post #15





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


To poczytaj podstawy OOP a potem bierz się do roboty
Go to the top of the page
+Quote Post
10log
post
Post #16





Grupa: Zarejestrowani
Postów: 11
Pomógł: 2
Dołączył: 28.02.2008

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


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ć? (IMG:style_emoticons/default/biggrin.gif)
Chcę wyciskać tyle ile się da (IMG:style_emoticons/default/wink.gif)


Nie bardzo widzę celowość takiego pakowanie obiektowości do jakiegoś prostego kawałka kodu ale jak już musisz (IMG:style_emoticons/default/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.  
Go to the top of the page
+Quote Post
Fred1485
post
Post #17





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Trochę za OOP się teraz biorę i tak próbuję zrobić jak najbardziej obiektowo (IMG:style_emoticons/default/biggrin.gif)
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: 5.10.2025 - 12:37