Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Brak dostępu do klasy Session w pliku dołączanym w klasie, w której dostęp jest
Ultear
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 3
Dołączył: 9.12.2013

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


Witam, mam taki problem, a mianowicie:

Biblioteka View ma dostęp do biblioteki Session, jednak widok wygenerowany przez klasę View już nie. Wygląda to tak:



Jeżeli chodzi o kod, to tutaj jest klasa View(W construct umieśiłem testowanie biblioteki Session, która działa):

  1. <?php
  2.  
  3. namespace Application\Libs;
  4. use Application\Libs\Session;
  5.  
  6. class View{
  7.  
  8. protected $content,
  9. $appendedFiles;
  10.  
  11.  
  12. function __construct(){
  13.  
  14. //Tutaj biblioteka Session działa!
  15. Session::addToSpace('errors', 'loginError', 'Błąd przy logowaniu');
  16. print_r($_SESSION);
  17. }
  18.  
  19.  
  20. /**
  21.   * Ustawia składowe dla widoku
  22.   *
  23.   * @param array $data ("nazwa składowej" => "wartość")
  24.   */
  25.  
  26. public function setData($data = array()){
  27. foreach($data as $key => $value){
  28. $this->$key = $value;
  29. }
  30.  
  31.  
  32. }
  33.  
  34.  
  35. /**
  36.   * Dołącza pliki do widoku (musi być wywołane przed prepare)
  37.   *
  38.   * @param string $fileName nazwa pliku
  39.   * @param string $filePath ścieżka pliku
  40.   * @param string $fileExtension rozszerzenie pliku
  41.   */
  42.  
  43. public function appendFile($fileName, $filePath, $fileExtension){
  44.  
  45. switch($fileExtension){
  46.  
  47. case 'css':
  48. $this->appendedFiles .= "<link rel='stylesheet' href='{$filePath}{$fileName}.{$fileExtension}' /> \n";
  49. break;
  50. case 'js':
  51. $this->appendedFiles .= "<script src='{$filePath}{$fileName}.{$fileExtension}'></script> \n";
  52. break;
  53.  
  54. }
  55.  
  56. }
  57.  
  58. /**
  59.   * Przygotowuje widok do wyświetlenia
  60.   *
  61.   * @param string $view folder/plik widoku
  62.   * @param string $extension rozszerzenie pliku
  63.   * @param array $options opcje ładowania(plik nagłówka, plik stopki i ścieżka do nich)
  64.   */
  65.  
  66. public function prepare($view, $extension, $options = array(
  67. 'header' => "default_header.html",
  68. 'footer' => "default_footer.html",
  69. 'path' => null
  70. )){
  71.  
  72.  
  73. if(is_null($options['path']))
  74. $options['path'] = APP_PATH."Application".DS."Public".DS.APP_TYPE.DS."Templates".DS;
  75.  
  76.  
  77.  
  78.  
  79. include($options['path'].$options['header']);
  80. include(APP_PATH.'Application'.DS.'Views'.DS.APP_TYPE.DS.$view.$extension);
  81. include($options['path'].$options['footer']);
  82.  
  83. $this->content = ob_get_contents();
  84.  
  85.  
  86.  
  87.  
  88. }
  89.  
  90. function __destruct(){
  91. if(!print($this->content))
  92. exit('Something went wrong');
  93. }
  94.  
  95. }


No i tutaj sam plik, w którym próbuję użyć biblioteki Session:

index.html.php
  1. <div id="login_panel">
  2. <?php //Tutaj biblioteka Session nie działa ( Session::exist('loginError', 'errors') ? Session::getFromSpace('errors', 'loginError') : '' ) ?>
  3. <h1><span>Panel</span> Administratora</h1>
  4. <form action="Admin/Login/verify" method="POST">
  5. <input name="username" type="text" placeholder="Nazwa użytkownika">
  6. <input name="password" type="password" placeholder="Hasło">
  7. <span class="version">v.1.0.a</span><input type="submit" value="Zaloguj">
  8. </form>
  9. <span class="foot">Class Marks Control System</span>
  10. </div>


Dlaczego Session nie działa w index.html.php?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
solr
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 8
Dołączył: 11.08.2010

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


<?php //Tutaj biblioteka Session nie działa ( Application\Libs\Session::exist('loginError', 'errors') ? Application\Libs\Session::getFromSpace('errors', 'loginError') : '' ) ?>
Go to the top of the page
+Quote Post
Ultear
post
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 3
Dołączył: 9.12.2013

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


A czy da się pominąć wypisywanie całego namespace'a? Bez używania use w pliku index oczywiście

Ten post edytował Ultear 16.10.2014, 19:12:03
Go to the top of the page
+Quote Post
solr
post
Post #4





Grupa: Zarejestrowani
Postów: 43
Pomógł: 8
Dołączył: 11.08.2010

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


Kazdy plik ma osobny namespace. Moim zdaniem (tzn. nigdy czegos takiego nie widzialem), nie ma takiej mozliwosci, aby plik includowany w jakis sposob mial wiedze o namespace zdefiniowanym w miejscu, gdzie jest includowany, albo aby mozna bylo zdefinowac jego namespace zewnetrzenie.

Ten post edytował solr 17.10.2014, 05:09:16
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 Aktualny czas: 21.08.2025 - 09:06