Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]Stała w configu
Ikky
post 19.08.2009, 12:26:18
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

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


Czy moge np dodac jakąs stała w configu którą będe potem mógł używać w kontrolerach?
np adres strony / tytuł
Go to the top of the page
+Quote Post
seth-kk
post 19.08.2009, 13:34:41
Post #2





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


tak


--------------------
Go to the top of the page
+Quote Post
Ikky
post 19.08.2009, 13:35:59
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

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


awesome
a mógłbyś mi podac przykładowy kod do configa i kontrolera ?
Go to the top of the page
+Quote Post
seth-kk
post 19.08.2009, 13:52:48
Post #4





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


w pliku z configiem
  1. define('STALA1', 'wartosc1');
  2. define('STALA2', 'wartosc2');
  3. return array(/*config content*/);

i np w bootstrapie
  1. $config = new Zend_Config(require 'config.php');

mozna tez kombinowac z metoda setReadOnly()


--------------------
Go to the top of the page
+Quote Post
Ikky
post 19.08.2009, 14:31:14
Post #5





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

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


zrobiłem takie coś:

configs/config.php
  1. <?php
  2. return
  3. (
  4. 'adres' => 'www.example.com',
  5. 'tytul' => 'secret',
  6. );


bootstrap.php

  1. protected function _initAutoload()
  2. {
  3. $config = new Zend_Config(require 'configs/config.php');


w kontrolerze

  1. echo $config->adres;


i niestety nie działa nie wiem co jest grane


edit/

zrobiłem takie coś w kontrolerze i działa

  1.  
  2. $config = new Zend_Config(require '../application/configs/config.php');
  3. echo $config->adres . " test";
  4.  


Ten post edytował Ikky 19.08.2009, 14:34:34
Go to the top of the page
+Quote Post
phpion
post 19.08.2009, 14:34:18
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Tworzysz zmienną $config jako zmienną lokalną w obrębie metody _initAutoload(), a nie jako składową klasy kontrolera i wewnątrz kontrolera nie jest ona już widoczna.
Go to the top of the page
+Quote Post
seth-kk
post 19.08.2009, 14:38:40
Post #7





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


  1. protected function _initAutoload()
  2. {
  3. $config = new Zend_Config(require 'configs/config.php');
  4. Zend_Registry::set('config', $config);


w kontrolerze

  1. $config = Zend_Registry::get('config');
  2. echo $config->adres;


--------------------
Go to the top of the page
+Quote Post
pgrzelka
post 20.08.2009, 21:56:33
Post #8





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


w którymś projekcie zrobiłem klasę wykorzystującą wzorzec singleton

  1. <?php
  2.  
  3. class Config extends Zend_Config_Ini {
  4.  
  5. static function get()
  6. {
  7. static $instance;
  8. if(!isset($instance)) {
  9. $instance = new Config;
  10. }
  11. return $instance;
  12. }
  13.  
  14. function __construct()
  15. {
  16. parent::__construct('../plik.ini','sekcja');
  17. }
  18. }


wykorzystanie
  1. Config::get()->jakas_zmienna

moje rozwiązanie ma tą zaletę że nie każda podstrona korzysta z konfiguracji, i wtedy nie zawsze klasa jest tworzona, nie musimy jej nigdzie inicjować, pliki ini będzie przeczytany tylko przy pierwszym odwołaniu do zmiennej


--------------------
Go to the top of the page
+Quote Post
Sajrox
post 21.08.2009, 22:58:24
Post #9





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Jeszcze ja mam pytanie do ostatnbiego postu @pgrzelka


A skąd Zend wie gdzie szukać ten plik z klasą Config questionmark.gif


Ja utworzyłem sobie plik Config.php z tą klasą, umiesciłem go w aplikacji na próbe. Gdy wywołałem klasę Config dystałem błąd:

  1. Fatal error: Class 'Config_Navigation' not found in C:\wamp\www\zend_quickstart\application\modules\admin\controllers\IndexController.php on line 14


Ten post edytował Sajrox 21.08.2009, 22:58:43
Go to the top of the page
+Quote Post
phpion
post 22.08.2009, 10:38:39
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Musisz ją umieścić jako library/Config/Navigation.php
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:14