PHP требуют () или включить () и вызвать переменную класса? - PullRequest
1 голос
/ 19 августа 2011

Я полагаю, это довольно просто, и я должен его получить, но у меня проблемы с этим. Кажется, я нигде не могу найти ответ на этот вопрос.

Рассмотрим сценарий: у меня есть два файла (назовем их index.php и global.php). Я правильно ссылаюсь на файл require_once().

Index.php:

<?php
require_once('./global.php');

$database = new database();
echo $database->dbname;
?>

global.php:

<?php
class database {
public $dbname = 'jdoe';
}
?>

Это не выводит 'jdoe' на страницу index.php. Однако ... если я помещу следующее в global.php, оно будет работать:

<?php
class database {
public $dbname = 'jdoe';
}

$database = new database();
echo $database->dbname;
?>

Ответы [ 3 ]

2 голосов
/ 18 июня 2014

Синтаксис создания объекта в php:

$obj=new class();

Вы пропустили () после имени класса.

2 голосов
/ 19 августа 2011
$database = new database();

Вы забыли круглые скобки.Кроме того, ознакомьтесь с документацией php для Классы и объекты , если вам нужна дополнительная информация об использовании классов в php.

Обновление :

Читая о Свойства класса PHP Я наткнулся на этот небольшой бит:

[Переменные-члены класса] должны быть в состоянии быть оцененными во время компиляции и не должны зависеть от запуска-время информации для оценки.

Я не уверен на 100% в этом, но кажется, что PHP видит ваше строковое назначение как "информацию времени выполнения".Попробуйте назначить переменную в конструкторе (в любом случае, это, вероятно, лучше).

class database {
    public $dbname;
    function __construct() {
        $this->dbname= 'jdoe';
    }
    // Rest of class
}

Надеюсь, это поможет!И если бы кто-нибудь смог проверить мое предположение, это было бы здорово.

1 голос
/ 19 августа 2011

Я думаю, это должно быть

$database = new database(); 

вместо

$database = new database;
...