Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brak dostępu do klasy Session w pliku dołączanym w klasie, w której dostęp jest
Forum PHP.pl > Forum > PHP
Ultear
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?

solr
<?php //Tutaj biblioteka Session nie działa ( Application\Libs\Session::exist('loginError', 'errors') ? Application\Libs\Session::getFromSpace('errors', 'loginError') : '' ) ?>
Ultear
A czy da się pominąć wypisywanie całego namespace'a? Bez używania use w pliku index oczywiście
solr
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.