namespaces en extends trubbels.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart V B

Bart V B

28/12/2014 11:42:51
Quote Anchor link
Hoi allen.

Ik ben met een eigen raamwerkje bezig en heb voor mijzelf besloten om met namespaces te werken.
Op zich werkt het nu allemaal voor wat er staat maar nu loop ik even vast op een extends.

In mijn map projectx/controllers/home.php staat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
use projectx\system\controller;

class home extends controller
{
    public function index()
    {

        echo 'test';
        $this->loadModel();
    }
}

?>

Mijn hoofd controller staat in projectx/system/controller.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
namespace projectx\system;

class controller
{
    public function loadModel()
    {

        echo 'Model Called!';
        // echo en return geprobeerd.
        //return 'Model Called!';

    }
}

?>

De controller home.php word netjes geladen middels mijn autoloader.
Echter doet de functie in de hoofd controller niets.
Ik krijg netjes de echo test te zien maar de functie die ik return in de hoofdcontroller niet.
Wat vergeet ik?
Gewijzigd op 28/12/2014 11:53:46 door Bart V B
 
PHP hulp

PHP hulp

26/12/2024 23:20:35
 
- SanThe -

- SanThe -

28/12/2014 11:48:26
Quote Anchor link
Je gebruikt return en geen echo.
Dan zie je inderdaad niets.
 
Bart V B

Bart V B

28/12/2014 11:51:17
Quote Anchor link
Was hij maar zo simpel SanThe.
Als ik echo dan zie ik hem ook niet.
EDIT
Heb het werkend, echter vind ik dit vaag.
Geef ik hem mee in een constructor dan werkt het wel.

Oke, ik geef het even op.
- autoloader verwijdert.
- op de ouderwetse manier includes gemaakt.
En toch werkt het niet zoals ik wens..
Als ik hem zo doe werkt het wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

class Controller
{      
     public function model($model)
    {

         echo $model;
        //require_once 'projectx/models/' .$model . '.php';
        //return new $model();

    }
}

?>

mijn system/controllers/controller.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class home extends Controller
{

    public function index()
    {

        $controller = new Controller;
        $controller->model('test');
    }
}

?>

Het lijkt wel een bug in php?
Ik werk overigens met php 5.59 op Ubuntu 14.04.
Gewijzigd op 28/12/2014 19:02:24 door Bart V B
 
Joe Bengalen

Joe Bengalen

13/01/2015 22:03:12
Quote Anchor link
De volgende code werkt bij mij wel. Kun je kijken of dit bij jou ook werkt?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

namespace projectx\system;

class controller
{
    public function loadModel()
    {

        echo 'Model Called!';
        // echo en return geprobeerd.
        //return 'Model Called!';

    }
}

?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
require 'controller.php';

use projectx\system\controller;

class home extends controller
{
    public function index()
    {

        echo 'test home controller<br />';
        $this->loadModel();
    }
}

(new
home())->index();
Gewijzigd op 13/01/2015 22:04:03 door Joe Bengalen
 
Bart V B

Bart V B

13/01/2015 22:57:37
Quote Anchor link
Hoi Joe,

Het is niet heel netjes van me, maar inmiddels ben ik opnieuw begonnen en is ook gelukt.
Ik was vergeten om een nieuwe instance te maken in mijn app waardoor de controller niet gezien werd.
i.i.g. bedankt voor de moeite.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.