Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/41: Рейтинг темы: голосов - 41, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46

Ошибка unexpected '.', expecting ',' or ';'

19.08.2012, 15:37. Показов 8691. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Уже полдня бьюсь с этой проблемой, надеюсь на помощь.
Описание:
Попытка вызова:
PHP
1
2
3
4
5
<?
require_once('d:\Domains\web-ing.16mb.com.lh\classes\Obr_sv.php');
$os= new Obr_sv;
print $os->message;
?>
Сам класс:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Obr_sv {
    // Скрипт для формы обратной связи
    var $name;
    var $email; // мыло адресата
    var $ms;
    
    var $to; // мыло отправителя
    var $subject = "Без темы";
var $message= 'Имя: ' . $this->name . '\nEmail: ' . $this->email . '\nТема: ' . $this->subject . '\nСообщение: ' . $this->ms; // Строка, выдающая ошибку
    var $headers  = "Content-type: text/plain; charset=utf-8 \r\n" . "From: $this->email \r\n";
    
   function mailto()
   {    if (!$this->name || !$this->email || !$this->to || !$this->ms) echo "<font color=red>Пожалуйста, заполните все обязятельные поля.</font><br /><br />"; // проверка заполнены ли все обезятельные поля для отправки сообщения + вывод ошибки.
        else { mail($this->to, $this->subject, $this->message, $this->headers); echo $this->name.', Ваша заявка успешно отправлена. Мы свяжемся с Вами в ближайшее время. <br /><br />'; }
   }
}
Результат:
Parse error: syntax error, unexpected '.', expecting ',' or ';' in D:\Domains\web-ing.16mb.com.lh\classes\Obr_sv.php on line 10
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2012, 15:37
Ответы с готовыми решениями:

Ошибка unexpected T_VARIABLE, expecting T_FUNCTION
Привет всем, помогите с opencart, создал модуль, но выдаёт ошибку: Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION...

Ошибка "Parse error: syntax error, unexpected '{', expecting '(' in"
имеется класс safemysql.class.php Хочу заточить его под нужды своего сайта с помощью наследования//подключаю исходный класс //в нем уже...

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION
&lt;?php class Test{ public $serik=&quot;Сека молодец&quot;; function test1(){ echo $this-&gt;serik; }

40
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
19.08.2012, 15:50
В значениях по умолчанию нельзя указывать выражения. Только константные единицы.
PHP
1
2
3
class Foo {
    public $bar = 42;      // ok
    public $baz = 42 + 37; // fail
0
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
19.08.2012, 15:51
какая версия php у вас??? Команда phpinfo(); вам подскажет!
0
 Аватар для c4boomb
198 / 166 / 23
Регистрация: 20.04.2011
Сообщений: 750
Записей в блоге: 1
19.08.2012, 16:16
сделайте конструктор класса, в нём и присвойте всем переменным начальные данные
0
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
19.08.2012, 16:39  [ТС]
Всем спасибо за ответы!
Сделал так:
Вызов:
PHP
1
2
3
4
5
6
<?
require_once('d:\Domains\web-ing.16mb.com.lh\classes\Obr_sv.php');
$os= new Obr_sv;
$os->init();
print $os->message;
?>
Класс:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class Obr_sv {
    // Скрипт для формы обратной связи
    var $name;
    var $email; // мыло адресата
    var $ms;
    
    var $to; // мыло отправителя
    var $subject;
    var $message;
    var $headers;
    
   function init()
   {    $this->subject = "Без темы";
        $this->message= 'Имя: ' . $name . '\nEmail: ' . $email . '\nТема: ' . $subject . '\nСообщение: ' . $ms;
        $this->headers  = "Content-type: text/plain; charset=utf-8 \r\n" . "From: $this->email \r\n";
   }
   
   function mailto()
   {    if (!$this->name || !$this->email || !$this->to || !$this->ms) echo "<font color=red>Пожалуйста, заполните все обязятельные поля.</font><br /><br />"; // проверка заполнены ли все обезятельные поля для отправки сообщения + вывод ошибки.
        else { mail($this->to, $this->subject, $this->message, $this->headers); echo $this->name.', Ваша заявка успешно отправлена. Мы свяжемся с Вами в ближайшее время. <br /><br />'; }
   }
}
?>
Ввел функцию, инициализирующую значения переменных по умолчанию - function init()
Потом при создании нового объекта, сразу же ее вызываю.
Работает, но как-то многодельно выходит. Уверен, что есть лучше способы.
Вопрос:
Как это можно упростить? =)

Добавлено через 15 минут
Цитата Сообщение от Schtrich Посмотреть сообщение
какая версия php у вас???
PHP Версия: 5.2.14
0
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
20.08.2012, 09:01
PHP
1
2
3
$os= new Obr_sv;
$os->init();
print $os->message;
все плохо.

Во 1-ых версия php... Есть поновее, во 2-ых как вам уже сказали если хотите упростить аж совсем, то дей-но лучше использовать конструктор.

PHP
1
2
3
4
5
6
7
8
9
10
class BaseClass {
 
     var $name;     
 
     function __construct($n) {
         echo $this->name;
     }
}
 
$test = new BaseClass("KorniloFF");
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2012, 09:46
Schtrich, и что здесь получится..? что на экран ничего не выведется (если E_NOTICE включены, вылезет нотайс).. тогда уж хотя бы так..
PHP
1
2
3
4
5
6
7
8
9
10
11
class BaseClass {
 
     private $name;     
 
     function __construct($n) {
         $this->name = $n;
         echo $this->name;
     }
}
 
$test = new BaseClass("KorniloFF");
Добавлено через 34 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Obr_sv {
    // Скрипт для формы обратной связи
    private $headers;
    private $arr = array('Имя','E-mail','Без темы','Текст сообщения','Email to');
    
    function __construct(array $arr) {
        foreach($arr as $k=>$v) {
            $this->arr[$k] = (!empty($v)) ? addslashes(stripslashes(strip_tags(trim($v)))) : FALSE ;
        }
        $this->message = 'Имя: '.$this->arr[0].'\nEmail: '.$this->arr[1].'\nТема: '.$this->arr[2].'\nСообщение: '.$this->arr[3];
        $this->headers = "Content-type: text/plain; charset=utf-8 \r\n From: {$this->arr[2]} \r\n";
        $this->mailto();
    }
    private function mailto() { 
        if (!$this->arr[0] || !$this->arr[1] || !$this->arr[4] || !$this->arr[3]) 
            echo "<font color=red>Пожалуйста, заполните все обязятельные поля.</font><br /><br />"; // проверка заполнены ли все обезятельные поля для отправки сообщения + вывод ошибки.
        else { 
        if(mail($this->arr[4], $this->arr[2], $this->message, $this->headers)) 
                    echo $this->arr[0].', Ваша заявка успешно отправлена. Мы свяжемся с Вами в ближайшее время. <br /><br />'; 
                    else echo "Произошла ошибка при отправке сообщения. Пожалуйста, попробуйте еще раз";
        }
   }
}
$mail = new Obr_sv(array('Имя отправителя','Мыло отправителя','Тема письма','Текст сообщения','Адрес кому'));
0
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
20.08.2012, 09:47  [ТС]
Schtrich, спасибо за подсказку.
KOPOJI, позвольте с вами поспорить по причине моего недопонимания.
Разве не должно быть так:
PHP
1
2
3
4
5
6
7
8
9
10
11
class BaseClass {
 
     private $name;     
 
     function BaseClass($n) {
         $this->name = $n;
         echo $this->name;
     }
}
 
$test = new BaseClass("KorniloFF");
Разве имя конструктора не должно совпадать с классом?
Второй вопрос:
Если мне нужно назначить стопку значений по умолчанию, как тогда лучше поступить?
Потом некоторые свойства класса переопределятся при создании объекта, но остальные должны сохранить эти умолчания...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2012, 09:53
Цитата Сообщение от KorniloFF Посмотреть сообщение
Разве имя конструктора не должно совпадать с классом?
это было до 5 версии PHP, в PHP5 появился специальный магический метод __construct(), который вызывается при создании объекта. Но можно и название класса писать..

Добавлено через 2 минуты
а значения по умолчанию - в объявлении обычно прописывают..
1
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
20.08.2012, 09:54  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
это было до 5 версии PHP, в PHP5 появился специальный магический метод __construct(), который вызывается при создании объекта. Но можно и название класса писать..
Спасибо, не знал. После мучения Гугла натыкался лишь на старый синтаксис, как оказалось =)

Добавлено через 58 секунд
Цитата Сообщение от KOPOJI Посмотреть сообщение
а значения по умолчанию - в объявлении обычно прописывают..
А не затруднитесь примером, хоть самым примитивным?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2012, 09:58
Цитата Сообщение от KorniloFF Посмотреть сообщение
Спасибо, не знал. После мучения Гугла натыкался лишь на старый синтаксис, как оказалось =)
http://webphp.ru/2008/04/24/ra... p4-i-php5/

http://www.php.net/manual/ru/migration5.php

Добавлено через 1 минуту
Во втором посте вам уже написал Vovan-VE с примером
Цитата Сообщение от Vovan-VE Посмотреть сообщение
В значениях по умолчанию нельзя указывать выражения.
можно также в конструкторе указывать значения
PHP
1
function __construct($name="default",$surname="default",..) {}
0
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
20.08.2012, 10:05  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
можно также в конструкторе указывать значения
Спасибо. Вот это мне уже ближе.
Попробую уточнить:
Если мы имеем класс
PHP
1
2
3
class A {
function __construct($name="default",$surname="default", $name1="default") {}
}
То вызывать, переназначая первую и третью переменную мне нужно будет так?
PHP
1
new A('ext1', , 'ext3');
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2012, 10:11
нет, так выдаст ошибку. там только по порядку возможно
вот простенький пример
PHP
1
2
3
4
5
6
class foo {
   function __construct($first="default_first",$second="default_second",$third="default_third") {
echo $first,'<br>',$second,'<br>',$third;
   }
}
$bar = new foo('first','second');
0
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
20.08.2012, 10:12  [ТС]
И будет ли это эквивалентно записи:
PHP
1
2
3
4
5
6
7
class A {
var $name; var $surname; var $name1;
function __construct($this->name="default",$this->surname="default", $this->name1="default") {...};
}
$a= new A;
$a->name= 'ext1';
$a->name1= 'ext3';
Просто мне было бы проще на примерах разобраться. Поправьте, пожалуйста, если я не прав в этом коде.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2012, 10:14
вывести должен
first
second
default_third
Добавлено через 2 минуты
конструктор вызывается при создании объекта!! То есть вы сначала создаете его с дефолтными значениями, а уже затем переопределяете свойства объекта.. Вопрос - зачем так!?
0
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
20.08.2012, 10:15  [ТС]
Мне нужен пример для вывода
first
default_tsecond
hird

Как я понимаю, это не одно и то же...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2012, 10:16
и в конструктор вы не можете подать свойства этого объекта - объект же еще не создался
0
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
20.08.2012, 10:21  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
Вопрос - зачем так!?
Ну, к примеру, я создаю класс, в котором все неназначенные значения должны присутствовать в дефолтном варианте при создании объекта...

Добавлено через 3 минуты
Если рассмотреть приведенный мной выше вариант:
PHP
1
2
3
4
5
6
7
class A {
var $name; var $surname; var $name1;
function __construct($this->name="default",$this->surname="default", $this->name1="default") {...};
}
$a= new A;
$a->name= 'ext1';
$a->name1= 'ext3';
То тут последовательно я создаю объект,потом присваиваю ему свойства. Логика есть, вопрос в синтаксисе, ну и не знаю, можно ли в конструкторе так задавать переменные?...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
20.08.2012, 10:25
PHP
1
2
3
4
5
6
7
8
9
class foo {
function __construct($f="",$s="",$t="") {
if(empty($f)) $f = "default_first";
if(empty($s)) $s = "default_second";
if(empty($t)) $t = "default_third";
echo $f,'<br>',$s,'<br>',$t;
    }
}
$bar = new foo('first','','second');
Добавлено через 26 секунд
Цитата Сообщение от KorniloFF Посмотреть сообщение
Логика есть, вопрос в синтаксисе, ну и не знаю, можно ли в конструкторе так задавать переменные?
а вы запустите его

Добавлено через 55 секунд
увидите что то типа cannot re-assign $this (не помню точно как она там пишется)

Добавлено через 1 минуту
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class foo {
public $f = 'default_f';
public $s = 'default_s';
public $t = 'default_t';
function view() {
echo $this->f,'<br>',$this->s,'<br>',$this->t;
}
}
$bar = new foo;
$bar->f = 'first';
$bar->t = 'third';
$bar->view();
0
0 / 0 / 0
Регистрация: 14.07.2012
Сообщений: 46
20.08.2012, 10:30  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
а вы запустите его
Добавлено через 55 секунд
увидите что то типа cannot re-assign $this (не помню точно как она там пишется
Уф, конечно попробую, просто всю ночь не спалось, гонял другую проблему, а тут эта всплыла в результате попыток добиться рабочего кода.. =(
Пока еще туплю, влет пых читать не умею =)

Добавлено через 4 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
class foo { 
  function __construct($f="",$s="",$t="") { 
if(empty($f)) $f = "default_first"; 
if(empty($s)) $s = "default_second"; 
if(empty($t)) $t = "default_third"; 
echo $f,'<br>',$s,'<br>',$t; 
  } 
} 
$bar = new foo('first','','second');
Это решение мне сразу из ЯС в голову пришло, но мне оно не нравится. Даже если свитчем обрабатывать...
Да и зачем объявлять пустые переменные в конструкторе, чтобы их переназначать потом?...
Короче, я запутался... =(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2012, 10:30
Помогаю со студенческими работами здесь

Изучаю ООП и возникают ошибки "unexpected '(', expecting ',' or ';'"
Здравствуйте, я изучаю ООП и практикуя возникают вопросы не подвласные моему разуму, пока ) Надеюсь тут найдется добрые люди, кто направить...

Второй день бьюсь над ошибкой "Parse error: syntax error, unexpected '(', expecting ',' or ';' "
Ошибка: Parse error: syntax error, unexpected '(', expecting ',' or ';' in D:\........\mail.php on line 5 В этом файле: &lt;?php ...

Ошибка Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Помогите пожалуйста! &lt;?php if (!isset($myrow) or $myrow=='') { print &lt;&lt;&lt;HERE ...

ошибка Parse error: syntax error, unexpected 'function_toString' (T_STRING), expecting variable (T_VARIABLE)
Parse error: syntax error, unexpected 'function_toString' (T_STRING), expecting variable (T_VARIABLE) in...

Parse error: syntax error, unexpected 'text' (T_STRING), expecting ']'
Всем доброго дня! Пожалуйста помогите новичку: Столкнулся с проблемой в написании блога.. Вот часть нужного кода &lt;?php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru