質問

I'm trying to write my site in Controller-Model-View convention without using any framework but I have a problem with __autoload function.
Here's my source_folder/model/database.class.php file:

<?php
function __autoload($sName) {
    $aName = explode('_',$sName);
    if($aName[0] == 'Model')
        include '/model/' . strtolower($aName[1]) . '.class.php';
    else if($aName[0] == 'View')
        include '/view/' . strtolower($aName[1]) . 'class.php';
    else if($aName[0] == 'Controller')
        include '/controller' . strtolower($aName[1]) . 'class.php';
}
/**
 * Description of database
 *
 * @author Lysy
 */
class Model_Database {
   private $oConfig = new Model_Config();

   $this->oConfig->getConfigArray('database');

}

?>

And here's my source_folder/model/config.class.php file:

<?php
include_once '../config.php';

/**
 * Description of config
 *
 * @author Lysy
 */
class Model_Config {

    static function GetConfigArray($name) {
        return $config[$name];
    }
}

?>

The problem appears in line

private $oConfig = new Model_Config();

and it says syntax error, unexpected T_NEW.
I don't understand where lies the problem, because I'm using Netbeans IDE and when I type in private $oConfig = new M the program gives me a hint with Model_Config.
I'd be very glad to read some advices and probable solution to this problem, regards :)

EDIT: I rewrited the class Model_Config to look like this:

class Model_Database {

   private $oConfig;

   __construct() {
        $oConfig = new Model_Config();
    };

   $this->oConfig->getConfigArray('database');

}

But now there is a problem in line

__construct() {

Netbeans says that __construct() is unexpected, the error on the site stays the same, unexpected T_NEW

EDIT2: Oh sorry, too much C++, I keep forgeting about function word

役に立ちましたか?

解決

You can't assign values to member variables using expressions. You have to do that in your constructor or inside of a method.

他のヒント

Does your Model_Config contains more than that static method or why do you use "new Model_Config()" ?

That error message and "private" looks like you want to create an object direcly in your property. If you want to add an Model_Config object to the property of a specific class, you should use dependency injection. Here in your constructor for excample:

<?php

class YourClass
{

    private $oConfig;

    public function __construct(Model_Config $oConfig)
    {
         $this->oConfig = $oConfig;
    }
}

A nicer way of injection would be the usage of an interface as type hint. Maybe that method in your Model_Config shouldn't be static.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top