Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC jak to ugryźć
Forum PHP.pl > Forum > PHP > Object-oriented programming
Gibcio2008
Na początek pokażę pliki

index.php
  1. <?php
  2. require_once "Controller.php";
  3. require_once "Loader.php";
  4.  
  5. $Controller = new Controller();
  6. ?>


Controller.php

  1. <?php
  2. class Controller
  3. {
  4. public static $instance;
  5.  
  6. function __construct()
  7. {
  8. self::$instance = $this;
  9.  
  10. $this->loader = new Loader();
  11. }
  12.  
  13. public function get_instance()
  14. {
  15. return self::$instance;
  16. }
  17. }
  18. ?>


Loader.php

  1. <?php
  2. class Loader
  3. {
  4. public function GetFile($path, $data = '')
  5. {
  6. $file = file_get_contents($path);
  7.  
  8. echo $file;
  9. }
  10. }
  11. ?>



Plik index.php z katalogu application

  1. <?php
  2. class Index extends Controller
  3. {
  4. function __construct()
  5. {
  6. parent::__construct();
  7. }
  8.  
  9. public function Index()
  10. {
  11. $data = array
  12. (
  13. 'A' => 'a',
  14. 'B' => $this->loader->GetFile("template/Test.php")
  15. );
  16.  
  17. $this->loader->GetFile("template/main.php", $data);
  18. }
  19. }
  20. ?>


Zawartość pliku main.php

  1. Jakiś tekst
  2. {B}


Moje pytanie brzmi jak podmienić w pliku main.php {B} na zawartość pliku Test.php, próbuję na wszystkie sposoby i przez str_replace i przez przeg_replace i za każdym razem wychodzi jakiś błąd, między innym Catchable fatal error: Object of class Loader could not be converted to string in, proszę o pomoc.
Tomplus
Spróbuj tą bibliotekę:

https://github.com/Tomirad/ConvertStrings

Gibcio2008
Tylko proszę powiedz jak ją podpiąć, bo zielonego pojęcia nie mam
Pyton_000
@Gibcio2008 a co ty chcesz zrobić? Bo mnie się wydaje że ten Twój loader to raczej zamiast file_get_contents powinien mieć po prostu `require_once`
Gibcio2008
Chodzi mi głównie o to żeby z tablicy w Pliku index.php z katalogu application

  1. <?php
  2. class Index extends Controller
  3. {
  4. function __construct()
  5. {
  6. parent::__construct();
  7. }
  8.  
  9. public function Index()
  10. {
  11. $data = array
  12. (
  13. 'A' => 'a',
  14. 'B' => $this->loader->GetFile("template/Test.php")
  15. );
  16.  
  17. $this->loader->GetFile("template/main.php", $data);
  18. }
  19. }
  20. ?>


Wartości wprowadzić w pliku main.php za odpowiednie znaczniki np.

[B] lub {B} - żeby była zawartość z $this->loader->GetFile("template/Test.php")

  1. Jakiś tekst
  2. [B]
markonix
https://github.com/bobthecow/mustache.php
Tomplus
No nie wiem w czym problem, skoro na stronie jest nawet przykład użycia:

  1. class Loader
  2. {
  3. public function GetFile($path, $data = '')
  4. {
  5. $file = file_get_contents($path);
  6. $convert = new \Treto\ConvertStrings();
  7. echo $convert -> interpolate($file, $data,'{}');
  8. }
  9. }
  10.  


Gibcio2008
Poradziłem sobie wystarczyło pobawić się w buforowanie
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.