Ошибка parse error syntax error unexpected expecting or

Static class properties are initialized at compile time. You cannot use a constant TABLE_PREFIX to concatenate with a string literal when initializing a static class property, since the constant’s value is not known until runtime. Instead, initialize it in the constructor:

public static $user_table;

// Initialize it in the constructor 
public function __construct() {
  self::$user_table = TABLE_PREFIX . 'users';
}

// If you only plan to use it in static context rather than instance context 
// (won't call a constructor) initialize it in a static function instead 
public static function init() {
  self::$user_table = TABLE_PREFIX . 'users';
}

http://us2.php.net/manual/en/language.oop5.static.php

Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed. So while you may initialize a static property to an integer or array (for instance), you may not initialize it to another variable, to a function return value, or to an object.

Update for PHP >= 5.6

PHP 5.6 brought limited support for expressions:

In PHP 5.6 and later, the same rules apply as const expressions: some limited expressions are possible, provided they can be evaluated at compile time.

I am recieveing the following parse error:

Parse error: syntax error, unexpected ‘(‘, expecting ‘,’ or ‘;’ in
H:ProgramsUSBWebserver
v8.58.5rootoopforumfuncregister.class.php on line 7

which relates to the following line of code in my class:

private $random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);

I can not see why this line of code would cause a parse error?

Here is some surrounding code:

class register{
    public $post_data = array();
        private $dbh;
        private $allowed_type = array('image/jpeg','image/png','image/gif');
        private $random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
        private $path = 'img/thumb_/'.$random_name. $_FILES['file']['name'];
        private $max_width = 4040;
        private $max_height = 4040;
        private $max_size = 5242880;
        private $temp_dir = $_FILES['file']['tmp_name'];
        private $image_type = $_FILES['file']['type'];
        private $image_size = $_FILES['file']['size'];
        private $image_name = $_FILES['file']['name'];
        private $image_dimensions = getimagesize($temp_dir);
        private $image_width = $image_dimensions[0]; // Image width
        private $image_height = $image_dimensions[1]; // Image height
        private $error = array();

        public function __construct($post_data, PDO $dbh){
        $this->post_data = array_map('trim', $post_data);
        $this->dbh = $dbh;
        }
}

What is causing the parse error?

За последние 24 часа нас посетили 11696 программистов и 709 роботов. Сейчас ищут 290 программистов …


  1. nevidomo

    С нами с:
    23 окт 2020
    Сообщения:
    14
    Симпатии:
    0

    Подскажите как исправить

    <?php

    require_once ‘db.php’;

    $Login = $_POST[‘login’];
    $Group = $_POST[‘Group’];
    $FIO = $_POST[‘FIO’];

    mysqli_query($connect, query: «INSERT INTO `users` (`Login`, `Group`, `FIO`) VALUES (‘$Login’, ‘$Group’, ‘$FIO’)»);
    ?>

    Parse error: syntax error, unexpected ‘:’, expecting ‘,’ or ‘)’ in W:domainsPhptestcsscreate.php on line 9


  2. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.522
    Симпатии:
    1.744

    А откуда такой синтаксис взялся, с query:? То, что новые штормы так автоматом показывают бледным шрифтом, не означает, что это так писать надо.
    — Добавлено —
    Так можно, вроде, будет писать в 8 версии php, но она пока только RC, выйдет через месяц


  3. ADSoft

    перевести трудно? гугл транслейт хотя бы?
    посмотреть описание функции?

    : — замените на ,


  4. nevidomo

    С нами с:
    23 окт 2020
    Сообщения:
    14
    Симпатии:
    0

    заменил и и вот опять ошибка «Warning: mysqli_query() expects parameter 1 to be mysqli, null given in W:domainsPhptestcsscreate.php on line 9»


  5. nevidomo

    С нами с:
    23 окт 2020
    Сообщения:
    14
    Симпатии:
    0


  6. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.522
    Симпатии:
    1.744

    Ошибка изменилась, значит проблема другая. Скорее всего, подключения к базе не произошло, судя по тексту. Или переменная не так называется. Всё написано нормальным английским языком.Не понятен вопрос. Напишите в соответствии с синтаксисом php. Если не знаете синтаксис — какого фига лезете программировать?


  7. Dimon2x

    С нами с:
    26 фев 2012
    Сообщения:
    2.198
    Симпатии:
    184

    Начни с линухи и ангийского, без этих знаний будут постоянные проблемы, на решения которых ты будешь тратить целые дни.

    PHP тащит за собой сервер, сервер тащит за собой линукс, линукс тащит за собой английский, php ничего не знает про mysql.

    PHP это язык программирования, программирование это инженерия, инжеру надо знать очень много.


    Taktreba и mkramer нравится это.


  8. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.522
    Симпатии:
    1.744

    @Dimon2x Только я бы сказал, php — это программирование, программирование тащит за собой английский


  9. nevidomo

    С нами с:
    23 окт 2020
    Сообщения:
    14
    Симпатии:
    0

    я не понимаю почему не произошло подключения
    этот код мне выводит дание из бд
    <? include_once(‘db.php’) ?>
    <? $sql = $db->query(«SELECT * FROM `Users`»); /* запрос сам*/
    $db-> close;
    while ($result = $sql ->fetch_assoc()):?>
    <div class=»login»><h3><?=$result[‘login’] ?></h3> </div>
    <div class=»FIO»> <?=$result[‘FIO’] ?> </div>
    <? endwhile ?>

    а вот:
    не хочет вносить но подключаю к db.php
    <?php

    require_once ‘db.php’;

    $Login = $_POST[‘login’];
    $Group = $_POST[‘Group’];
    $FIO = $_POST[‘FIO’];

    mysqli_query($connect, query, «INSERT INTO `users` (`Login`, `Group`, `FIO`) VALUES (‘$Login’, ‘$Group’, ‘$FIO’)»);
    ?>


  10. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.522
    Симпатии:
    1.744

    А что в db.php? И прочитайте в подписи, как оформлять код

    Это бред сивой кобылы, прочитайте документацию по mysqli.

    И судя по коду, вы в основах путаетесь, что такое переменная, что такое параметры.


  11. nevidomo

    С нами с:
    23 окт 2020
    Сообщения:
    14
    Симпатии:
    0

    В db.php:
    <?php
    $db = new mysqli(‘localhost’,’root’,’root’,’Users’);

    ?>


  12. acho

    acho
    Активный пользователь

    И не надо смешивать процедурный и ООП стили.


  13. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.522
    Симпатии:
    1.744

    @nevidomo, ну я же говорю, переменные не понимаете. В одном месте она у вас $db называется, а в другом месте должна как-то преобразоваться в $connect сама собой?


  14. Dimon2x

    С нами с:
    26 фев 2012
    Сообщения:
    2.198
    Симпатии:
    184

    ‘Users’ — это строка
    $users — это переменная


  15. nevidomo

    С нами с:
    23 окт 2020
    Сообщения:
    14
    Симпатии:
    0

    зделал
    db.php:
    <?php
    $connect = new mysqli(‘localhost’,’root’,’root’,’Users’); /* connect db */

    ?>
    create.php:

    <?php

    require_once ‘db.php’;

    $Login = $_POST[‘Login’];
    $Group = $_POST[‘Group’];
    $FIO = $_POST[‘FIO’];

    mysqli_query($connect, query, «INSERT INTO `users` (`Login`, `Group`, `FIO`) VALUES (‘$Login’, ‘$Group’, ‘$FIO’)»);
    ?>
    но ошибка: Warning: mysqli_query() expects parameter 3 to be integer, string given in W:domainsPhptestcsscreate.php on line 9


  16. mkramer

    Команда форума
    Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.522
    Симпатии:
    1.744

    Ну уже изменилось. Но документацию по mysqli_query так и не поискал. И код оформляешь как попало. Как правильно — у меня в подписи.

    https://www.php.net/manual/ru/mysqli.query.php — читаем здесь, как правильно. Вообще не понимаю, откуда у тебя слово query в параметрах. Это неосознанное программирование, бич молодых программистов, судя по тем, что к нам на собеседования приходят. Код через сознание не проходит, спрашиваешь: «с какой целью написал именно так, а не иначе» — ответить не могут. Не приучайте себя к такому. Правило очень простое, чтоб программирование было осознанным — читать про каждую функцию, которая вызывается, документацию. Читать, как работает язык на котором пишешь. Читать, читать и ещё раз читать.


  17. nevidomo

    С нами с:
    23 окт 2020
    Сообщения:
    14
    Симпатии:
    0

    большое спасибо
    уже понял где проблема


  18. MouseZver

    С нами с:
    1 апр 2013
    Сообщения:
    7.604
    Симпатии:
    1.292
    Адрес:
    Лень

    @nevidomo, самое начало, от чего нужно начинать отталкиваться, это

    russkij_jazyk_uchebniki_3_4_kl_1979_80_g_g.jpg

    Пи3дец — даже подсветку текстаАрены нахрен продуплить o_O какое б… программирование ??

    Читаем Parse error — что за херня ? Транслятор нельзя было врубить и перевести ??? «Ошибка синтаксического анализа»

    Что такое СИНТАКСИС ? Снова гуглим — узнаем.. Это тоже 6лядь как русский язык ГРА МА ТИ КА
    С таким же успехом дальше переводим, думаем, покурим и снова думаем, можешь даже поужинать если до такого дошло.
    Line ? строка
    Что — то в строке 9 Синтаксис долбаный сломан в PHP o_O Ведь пхп интерпретатор ругается
    Смотрим и дуплим, что там за 9 строка

    1. mysqli_query($connect, query: «INSERT INTO `users` (`Login`, `Group`, `FIO`) VALUES (‘$Login‘, ‘$Group‘, ‘$FIO‘)»);

    Идем, смотрим ОФФ документацию — гуглим mysqli_query
    Читаем и просвещаемся. Cмотрим на ПРИМЕРЫ ЗАПОЛНЕНИЯ АТРИБУТОВ, у данной функции.

    Оказывается, какого }{Yя у тебя бичь в виде «query: » скопирована из помойной документации в интернете.

    На будущее, юзай редактор с ПОДСВЕТКОЙ PHP
    — Добавлено —
    Даже тут херня эта подсвечивается

Same issue here.

Have the following cron job: cd /home/user/www && php ./artisan schedule:run

This executes /usr/local/php56/bin/php artisan queue-process-listener

I’m getting the following error:

Parse error: syntax error, unexpected ‘.’, expecting ‘&’ or variable (T_VARIABLE) in /home/user/www/vendor/laravel/framework/src/Illuminate/Foundatio n/helpers.php on line 477

PHP returns:

% php -v
PHP 5.6.29 (cli) (built: Dec 9 2016 23:39:41)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

% /usr/local/php56/bin/php -v
PHP 5.6.29 (cli) (built: Dec 9 2016 23:39:41)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

KorniloFF

0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

1

19.08.2012, 15:37. Показов 7147. Ответов 40

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте!
Уже полдня бьюсь с этой проблемой, надеюсь на помощь.
Описание:
Попытка вызова:

PHP
1
2
3
4
5
<?
require_once('d:Domainsweb-ing.16mb.com.lhclassesObr_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 rn" . "From: $this->email rn";
    
   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:Domainsweb-ing.16mb.com.lhclassesObr_sv.php on line 10



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

19.08.2012, 15:37

Ответы с готовыми решениями:

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

Ошибка «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;

}

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

40

Vovan-VE

13207 / 6595 / 1041

Регистрация: 10.01.2008

Сообщений: 15,069

19.08.2012, 15:50

2

В значениях по умолчанию нельзя указывать выражения. Только константные единицы.

PHP
1
2
3
class Foo {
    public $bar = 42;      // ok
    public $baz = 42 + 37; // fail



0



weboman

210 / 195 / 63

Регистрация: 13.08.2010

Сообщений: 1,531

Записей в блоге: 6

19.08.2012, 15:51

3

какая версия php у вас??? Команда phpinfo(); вам подскажет!



0



198 / 166 / 23

Регистрация: 20.04.2011

Сообщений: 750

Записей в блоге: 1

19.08.2012, 16:16

4

сделайте конструктор класса, в нём и присвойте всем переменным начальные данные



0



KorniloFF

0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

19.08.2012, 16:39

 [ТС]

5

Всем спасибо за ответы!
Сделал так:
Вызов:

PHP
1
2
3
4
5
6
<?
require_once('d:Domainsweb-ing.16mb.com.lhclassesObr_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 rn" . "From: $this->email rn";
   }
   
   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



Schtrich

weboman

210 / 195 / 63

Регистрация: 13.08.2010

Сообщений: 1,531

Записей в блоге: 6

20.08.2012, 09:01

6

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



KOPOJI

Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

20.08.2012, 09:46

7

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 rn From: {$this->arr[2]} rn";
        $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



KorniloFF

0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

20.08.2012, 09:47

 [ТС]

8

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

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

20.08.2012, 09:53

9

Цитата
Сообщение от KorniloFF
Посмотреть сообщение

Разве имя конструктора не должно совпадать с классом?

это было до 5 версии PHP, в PHP5 появился специальный магический метод __construct(), который вызывается при создании объекта. Но можно и название класса писать..

Добавлено через 2 минуты
а значения по умолчанию — в объявлении обычно прописывают..



1



0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

20.08.2012, 09:54

 [ТС]

10

Цитата
Сообщение от KOPOJI
Посмотреть сообщение

это было до 5 версии PHP, в PHP5 появился специальный магический метод __construct(), который вызывается при создании объекта. Но можно и название класса писать..

Спасибо, не знал. После мучения Гугла натыкался лишь на старый синтаксис, как оказалось =)

Добавлено через 58 секунд

Цитата
Сообщение от KOPOJI
Посмотреть сообщение

а значения по умолчанию — в объявлении обычно прописывают..

А не затруднитесь примером, хоть самым примитивным?



0



KOPOJI

Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

20.08.2012, 09:58

11

Цитата
Сообщение от 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



KorniloFF

0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

20.08.2012, 10:05

 [ТС]

12

Цитата
Сообщение от KOPOJI
Посмотреть сообщение

можно также в конструкторе указывать значения

Спасибо. Вот это мне уже ближе.
Попробую уточнить:
Если мы имеем класс

PHP
1
2
3
class A {
function __construct($name="default",$surname="default", $name1="default") {}
}

То вызывать, переназначая первую и третью переменную мне нужно будет так?

PHP
1
new A('ext1', , 'ext3');



0



KOPOJI

Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

20.08.2012, 10:11

13

нет, так выдаст ошибку. там только по порядку возможно
вот простенький пример

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



KorniloFF

0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

20.08.2012, 10:12

 [ТС]

14

И будет ли это эквивалентно записи:

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

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

20.08.2012, 10:14

15

вывести должен

first
second
default_third

Добавлено через 2 минуты
конструктор вызывается при создании объекта!! То есть вы сначала создаете его с дефолтными значениями, а уже затем переопределяете свойства объекта.. Вопрос — зачем так!?



0



0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

20.08.2012, 10:15

 [ТС]

16

Мне нужен пример для вывода
first
default_tsecond
hird

Как я понимаю, это не одно и то же…



0



Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

20.08.2012, 10:16

17

и в конструктор вы не можете подать свойства этого объекта — объект же еще не создался



0



KorniloFF

0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

20.08.2012, 10:21

 [ТС]

18

Цитата
Сообщение от 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



KOPOJI

Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

20.08.2012, 10:25

19

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



KorniloFF

0 / 0 / 0

Регистрация: 14.07.2012

Сообщений: 46

20.08.2012, 10:30

 [ТС]

20

Цитата
Сообщение от 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



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

20.08.2012, 10:30

Помогаю со студенческими работами здесь

Второй день бьюсь над ошибкой «Parse error: syntax error, unexpected ‘(‘, expecting ‘,’ or ‘;’ «
Ошибка:
Parse error: syntax error, unexpected ‘(‘, expecting ‘,’ or ‘;’ in D:……..mail.php on…

Ошибка 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==») {

ошибка Parse error: syntax error, unexpected ‘function_toString’ (T_STRING), expecting variable (T_VARIABLE)
Parse error: syntax error, unexpected ‘function_toString’ (T_STRING), expecting variable…

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

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

Или воспользуйтесь поиском по форуму:

20

Понравилась статья? Поделить с друзьями:
  • Ошибка park brake ауди а6 с6
  • Ошибка park brake fault дискавери 3
  • Ошибка park assist service requ 106 volvo xc90
  • Ошибка parameter with name 86 not exist
  • Ошибка paper на принтере brother