Проблема выполнения класса при использовании PHP CLI - PullRequest
0 голосов
/ 27 февраля 2011

Я создал файл test.class.php, содержащий следующий код в среде LAMP:

<?php

class MyClass 
{
    public var $variable;
};

$obj = new MyClass();

?>  

Когда я бегу:

php myclass.php

из командной строки я получаю сообщение об ошибке:

Ошибка разбора: синтаксическая ошибка, неожиданный T_STRING, ожидаемый T_OLD_FUNCTION или T_FUNCTION или T_VAR или '}' в /path/html/_dev/classes/test.class.php в строке 5

Если я получаю доступ к тому же файлу через браузер, я не получаю ошибок. Любые предложения о том, что может происходить?

Ответы [ 5 ]

4 голосов
/ 27 февраля 2011

Вам не нужны ключевые слова var;вы должны использовать:

public $variable;

Это правильный синтаксис PHP 5.


var - это версия PHP 4, с которой вы бы использовали:

var $variable;

Но в PHP 4 не было ключевого слова public, а public (PHP 5) и var (PHP 4) невозможноиспользоваться вместе.


Дополнительные сведения о public, var и других ключевых словах того же рода см. на этой странице руководства по PHP: Visibility


Относительно того, почему ваш код не отображает никаких ошибок при запуске веб-сервером ... Возможно, разница в конфигурации, которая приводит к тому, что ошибки не будутотображается, в одном случае?

Примечание: CLI и PHP / Apache могут использовать разные файлы конфигурации - и часто делают.



Какsidenote (это не вызывает проблем) , вам не нужна точка с запятой в конце определения класса: ваш код должен выглядеть следующим образом:

class MyClass 
{
    public $variable;
}

$obj = new MyClass();
0 голосов
/ 28 февраля 2011

Разобрался.Версия CLI PHP, в которой по умолчанию используется команда PHP, - это PHP 4.4.8.

Мой хост также имеет команду PHP5, настроенную для использования PHP 5.2.14.Когда я выполнил команду

PHP5 myclass.php

Все работало правильно.Тем не менее, код, который я разместил, первоначально выдал другую ошибку.Строка

public var $variable 

, которая была решением для другого поста переполнения стека, не работала.Я заменил его на

public $variable

и смог успешно проверить это изменение.

Эта ссылка очень помогла http://www.yiiframework.com/forum/index.php?/topic/4319-error-on-yiibase-php-on-line-55/

0 голосов
/ 27 февраля 2011

public var $variable; это слишком много.Просто используйте одно из этих ключевых слов.

0 голосов
/ 27 февраля 2011

Избавьтесь от ключевого слова var, в этом нет необходимости.

<?php

class MyClass 
{
    public $variable;
};

$obj = new MyClass();

?>
0 голосов
/ 27 февраля 2011

Убедитесь, что вы используете php5 cli:

$ php -v
PHP 5.3.3 (cli) (built: Aug 22 2010 19:41:55) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Вы можете проверить, какую версию php вы используете и где он находится, с помощью этой команды: which php.

И, как сказали другие парни, избавьтесь от этого var.Но, похоже, это не проблема.Ошибка сообщает, что private - неизвестный токен.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...