PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : include != import



djaliced
24-08-2013, 01:44
Hallo Ihr Lieben,
ich habe echt (momentan) ein Verständnisproblem (ich glaube es liegt an den vielen Programmiersprachen die ich parallel lerne ;-) ).
Für mich war ein INCLUDE und ein IMPORT immer das gleiche, aber schneibar ist dem nicht so.

Ich bin gerade dabei das Zend-Framework mir näher beizubringen und ich habe mich immer gewundert. Wie kann eine phtml-Datei gleich mit $this auf das View-Objekt zugreifen, denn es ist ja einfach nur eine Datei.
Um mir das selber verständlich zu machen, habe ich dann folgende kleine Dateien geschrieben.

index.php


<?php
include 'View.php';
$view = new View();
$view->message = 'Dies ist die View.';
$view->run();

View.php


<?php
class View {
private $view_items = array ();
public function __get($key) {
if (array_key_exists ( $key, $this->view_items)) {
return $this->view_items[$key];
}
}
public function __set($key, $value) {
$this->view_items[$key] = $value;
}
public function run() {
include 'view.phtml';
}
}

view.phtml


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<?php print_r($this->message) ?>
</body>
</html>


(print_r natürlich nur zum test)

Aber was soll ich sagen, es funktioniert... und ich war fest der Überzeugung, dass es NICHT funktioniert. Normal sollte man denken "wenn es funktioniert, warum fragt er/sie denn nach" aber nun ja, ich will es halt genau wissen ;-)

Wie ich oben schon geschrieben habe, dachte ich das ein INCLUDE und ein IMPORT immer das gleiche ist. Sprich die view.php Datei hätte nach meinen Verständnis dann so ausgesehen...



<?php
class View {
private $view_items = array ();
public function __get($key) {
if (array_key_exists ( $key, $this->view_items)) {
return $this->view_items[$key];
}
}
public function __set($key, $value) {
$this->view_items[$key] = $value;
}
public function run() {
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<?php print_r($this->message) ?>
</body>
</html>
}
}

Aber mit diesen "Mist" kann ja keiner was anfangen ;)
Und bei einem Import hätte es so ausgesehen.
Nun ja, ich habe mich dann mal in der PHP.net Welt schlau gemacht und folgendes gefunden
"include bindet eine angegebene Datei ein und führt sie aus."

BINGOOOOOOOO sie bindet sie ein und führt sie gleich aus... sprich wie ein Verweis auf eine Datei die per URL aufgerufen wird.

...das war's ;)