Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dostęp do klasy
mareczek2
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 30.04.2007

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


  1. <?php
  2. class klasa {
  3. public function zrobcos() {
  4. //kod
  5. }
  6. }
  7. class klasaPierwsza {
  8. public function wykonaj() {
  9. $tmp = new klasa();
  10. $tmp->zrobcos();
  11. }
  12. }
  13. class klasaDruga {
  14. public function wykonaj() {
  15. $tmp = new klasa();
  16. $tmp->zrobcos();
  17. }
  18. }
  19. ?>

Witam,
potrzebuję zrobić coś takiego, żeby klasaPierwsza miała dostęp do 'klasa', a klasaDruga już nie, czyli potrzebuje czegoś takiego:
  1. <?php
  2. class klasa {
  3. function __construct() {
  4. if(wywolane z != klasaPierwsza) exit;
  5. }
  6. public function zrobcos() {
  7. //kod
  8. }
  9. }
  10. class klasaPierwsza {
  11. public function wykonaj() {
  12. $tmp = new klasa();
  13. $tmp->zrobcos();
  14. }
  15. }
  16. class klasaDruga {
  17. public function wykonaj() {
  18. $tmp = new klasa();
  19. $tmp->zrobcos();
  20. }
  21. }
  22. ?>

macie może jakiś pomysł jak to zrobić?


EDIT (co do wyjaśnienia):
mam kod taki jak ten u góry:
jest sobie klasa o nazwie "klasa" i problem jest w tym, że instancję tej klasy można robić z każdego miejsca, a chciałbym, aby jej instancję można było robić tylko z określonych innych klas.

Ten post edytował mareczek2 30.04.2007, 21:21:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
faster
post
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 9.09.2002
Skąd: Pszczyna

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


Tylko zastanawiam się co takie zabezpieczenie mogłoby wnieść w logikę aplikacji? I tak w zasadzie nie zabezpieczysz się przez niewłaściwym użyciem danej klasy. Jeżeli trafisz na "specjalistę" to jest w stanie i klasę Drzewo wykorzystać jako List (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Natomiast wróćmy do Twojego problemu. co powiesz na takie rozwiązanie?

  1. <?php
  2.  
  3. class Klasa
  4. {
  5.  
  6. private function __construct()
  7. {
  8. }
  9.  
  10. public static function DoForKlasaPierwsza(KlasaPierwsza $klasa)
  11. {
  12. $klasa = new Klasa();
  13. $klasa->zrobcos();
  14. }
  15.  
  16. public function zrobcos()
  17. {
  18. //kod
  19. print('do it');
  20. }
  21. };
  22.  
  23. class KlasaPierwsza
  24. {
  25. public function wykonaj()
  26. {
  27. Klasa::DoForKlasaPierwsza($this);
  28. }
  29. };
  30.  
  31. class KlasaDruga
  32. {
  33. public function wykonaj()
  34. {
  35. Klasa::DoForKlasaPierwsza($this);
  36. }
  37. };
  38.  
  39.  
  40. $k1 = new KlasaPierwsza();
  41. $k1->wykonaj();
  42.  
  43. $k2 = new KlasaDruga();
  44. $k2->wykonaj();
  45.  
  46. ?>



Pozdrawiam
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: 5.10.2025 - 01:10