Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> klasa nie widzi zmiennych z poza niej samej.
acztery
post
Post #1





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


witam,

mam taki kod

  1. <?php
  2.  
  3. $example = "test"; // includowane gdzies tam ...
  4.  
  5. class main
  6. {
  7.  
  8. public function ble()
  9. {
  10. echo $example
  11. }
  12. }
  13. ?>


jak zrobic zeby ta klasa ja widzial nie chce stosowac gloabl

Ten post edytował acztery 4.08.2006, 19:26:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
athabus
post
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


acztery - zrób tak jak mówi KG- czyli użyj konstruktora i po sprawie.
Zmień też zmienne wewnątrz klasy na private bo zmienne public w klasie aż w oczy rażą (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)

Ideą stojącą za OOP jest ograniczanie dostępu do wszystkiego co się da, tak aby móc jak najmniej zapsuć. //oczywiscie jest to uproszczony opis
Klasa ma mieć swoje API, za pomocą którego możesz nią manipublować. Teraz to sobie możesz zrobić małe kuku taki jak np:

  1. <?php
  2. $objBasket=new Basket()
  3. $objBasket->meUID='czemu ta zmienna jest stringiem?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ';
  4. $objBasket->meSES='dostęp bezpośredni do zmiennych klasy jest niebezpieczny';
  5. ?>


Jeśli klasa wymaga dostępu do zmiennej to zrób metody dostępowe, które będą kontrolowały aby przypadkiem nie przypisać do zmiennej typu int stringa czy czegokolwiek niezgodnego z twoją wizją.

Dobrze że rezygnujesz z superglobali/globali itd. W OOP nie powinieneś tego stosować - obiekt ma dostać pewne parametry, przetworzyć je i coś zwrócić. Pamatetry muszą być przekazywane jawnie do obiektu, tak aby niezależnie od otoczenia w którym się znajdzie zawsze zwrócił to samo. Jeśli obiekt jest zależny od jakiejś zmiennej typu global to ten warunek nie jest spełniony. Wiadomo, że czasem oznacza to więcej pisania - można się zastanawiać po co tworzyć kopię zmiennej w obiekcie, gdy mamy ją już w skrypcie zdefiniowaną - ale tu chodzi o bezpieczeństwo - za pół roku coś tam będziesz zmieniał i usuniesz/zmienisz nazwę tej zmiennej, a to spowoduje konsekwencje, których nie można przewidzieć. Lepiej napisać trochę więcej, ale zaoszędzić czas przy poprawkach i zmianach.

Ten post edytował athabus 5.08.2006, 12:26:25
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 23:26