За последние 24 часа нас посетили 22862 программиста и 1235 роботов. Сейчас ищут 757 программистов ...

Баг в интерпретаторе php или в моей голове?

Тема в разделе "PHP для новичков", создана пользователем LShadow77, 30 сен 2016.

  1. LShadow77

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Всем здравствуйте! Пожалуйста, помогите разобраться новичку в чертовщине! Весь мозг себе порвал, буквально с ума схожу, но НЕ ПОНИМАЮ, что происходит!
    Собственно, вот сам код:
    PHP:
    1. <?php
    2.     $SKIN = 1;
    3.  
    4.     class CSkin
    5.     {
    6.         var $BkgrImg;
    7.         var $BkgrCol;
    8.         var $t;
    9.         var $YeschoOdnoKonchennoeSvjystvo;
    10.  
    11.         function CSkin($BkgrNo_,$BkgrCol_)
    12.         {
    13.             $No = $BkgrNo_;
    14.             if ($BkgrNo_<10) $No = "0".$BkgrNo_;
    15.             $this->$BkgrImg = "images/skin".$No."/background.jpg";
    16.             $this->$BkgrCol = $BkgrCol_;
    17.  
    18.             echo $this->$BkgrImg."<br>";/////////////////
    19.             echo $this->$BkgrCol."<br>";//////////////////
    20.             echo $this->$t."<br>";//////////////////////
    21.             echo $this->$YeschoOdnoKonchennoeSvjystvo."<br><br>";//////////////////////
    22.          
    23.         }
    24.     }
    25.  
    26.     $Skins[0] = new CSkin(0,"black");
    27.     $Skins[1] = new CSkin(1,"#7F8391");
    28.     $Skins[2] = new CSkin(2,"#252222");
    29.  
    30.     $Sk = $Skins[$SKIN];
    31. ?>
    32.  
    33. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    34. <html>
    35.     <head>
    36.         <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    37.         <title>Что за грёбаный баг???</title>
    38.         <style type="text/css">
    39.            .main_body {
    40.                 background-color:<?=$Sk->$BkgrCol?>;
    41.                 background-image:url(<?="\"".$Sk->$BkgrImg."\""?>);
    42.                 background-size:cover
    43.            }
    44.         </style>
    45.     </head>
    46.     <body class="main_body">
    47.     </body>
    48. </html>
    *Строки с комментариями наподобие "/////////////////" поместил для отладки, чтобы увидеть значения свойств.

    Очень простой код, не правда ли? Просто объявляю класс с заданными свойствами. Конструктор свойству $BkgrImg присваивает строковое значение пути к изображению, а свойству $BkgrCol - заданный цвет фона.

    Однако результат обескураживает своей крайней степенью неожиданности:

    [​IMG]

    Иными словами, все свойства, объявленные в классе, с какого-то перепугу рассматриваются интерпретатором как одно свойство, но с разными ссылками на него! И стоит присвоить значение одному из них, то это значение тут же принимают остальные!!! После присваивания значения свойству $BkgrCol, все остальные свойства ($BkgrImg, $t,...) автоматически принимают такое же!!!
    Скажите пожалуйста, что я упустил из виду? Или это действительно баг интерпретатора (случай 1 на миллион)? Помогите мне пожалуйста!!!
     
    #1 LShadow77, 30 сен 2016
    Последнее редактирование модератором: 1 окт 2016
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    var_dump()
    --- Добавлено ---
    var_dump()
    это ещё старее, чем труселя моей мёртвой бабушки.
    --- Добавлено ---
    __construct()
    --- Добавлено ---
    подчёркивания после переменной это авторский стиль? :D

    Нужно сменить книжку или по чему ты там делаешь. Это всё явно для какой-то очень старой версии пхп. Ща уже новая вышла после той, что вышла после той, что вот такой синтаксис имела. Т.е. сильно старая. Не надо так писать уже.
    --- Добавлено ---
    лишнее

    попробуй без этого, может всё наладится.
    вот так
     
    LShadow77 и denis01 нравится это.
  3. LShadow77

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Спасибо, действительно наладилось!
    Однако теперь какой-то осадок у меня остался по поводу php. Если и дальше будут такие подвохи неочевидные, когда вроде бы всё правильно, а работает не так...
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    будут, не сомневайся. лучше брось прямо сейчас
     
  5. LShadow77

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Пишет, что версия 4.1 или что-то вроде того. Качал php triad, вроде последний релиз. Не знал, что в нём php старый. И вообще что-либо современное в инете по данной теме очень сложно найти, поисковики сплошь одно старьё выдают(((
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Вполне очевидные. Просто книжку надо по современному PHP почитать. Книги по языку обычно через год выкидывать можно. Хранить только классику а-ля Кнута имеет смысл

    Поэтому лучше просто читать php.net, там современные
     
  7. LShadow77

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Можно и так сказать. В С++ я так отделяю параметры, передаваемые методам от полей класса с аналогичными именами - очень удобно на самом деле)) А в пхп по привычке перенёс.
    --- Добавлено ---
    Вероятно, да. Однако в книгах, как правило, подход подачи материала более систематичен, чем на сайтах. В той книге, которую я сейчас читаю, кстати, до раздела пхп ещё не добрался))
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    LShadow77 нравится это.
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    нафига тебе вообще пхп?
     
    denis01 нравится это.
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Странно, что когда ты его ставил, у тебя песок не посыпался из системника.

    Все равно что придти в музей, увидеть австралопитека и заиметь осадочек на человечество.
     
    LShadow77 и denis01 нравится это.
  11. LShadow77

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    Хочу уметь делать сайты. Если что, то в кодинге как таковом я не новичёк, на C++, assembler достаточно много в своё время нащёлкал.
    Ну да, видимо так) Теперь снесу этот триад и поставлю свежие php, apache и mysql по отдельности.
    К слову вопрос: слышал, что технология ajax тоже устарела, это правда? И если да, то что вместо неё? Сорри, если это вопрос чайника, но мне, как новичку в веб-кодинге такие вопросы задавать можно, я думаю))
     
  12. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Нет. Может имелось в виду использование ajax для реализации чатов? Теперь для этого есть веб-сокеты. Можете поставить руками, можете взять open server или xampp, там последние версии php. Самая большая проблема вашего кода - то, что такой синтаксис
    PHP:
    1. $this->$BkgrImg="images/skin".$No."/background.jpg";
    тоже допустим, но означает сейчас совсем не то, что вы имели в виду.
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    тогда начни изучать php версии как минимум 5.4 а лучше 7.

    с другой стороны Angular не связан с php вообще, как и всё фронтэндовое. Но платят там не меньше. Ты подумай, зачем тебе че, и вперде.
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    ajax - это обычный запрос к серверу из браузера, но:
    1) Асинхронный
    2) Фоновый

    Тут принципиально нечему устаревать. Просто это такой вот тип запроса. Этот вот форум на 95% состоит из этого вашего аякса. Просто потому что фоновые запросы это удобно, красиво, экономично, гибко, позволяет задавать страничке поведение как у десктопного софта. Превращая веб-страницу из статичного, но красивого бревна в полноценный тонкий/толстый клиент.

    Другое дело, что да, для клиент-серверной связки появились дополнительные технологии как те же вебсокеты. Но это не "новый ajax". Это вебсокеты. Это разные вещи, они по-разному работают, они служат для разных целей. Вебсокеты нужны там, где накладно/глупо использовать AJAX. А AJAX нужен там, где накладно/глупо использовать вебсокеты.

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

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    @Fell-x27, спасибо за инфу. А то недавно мне один товарищ накапал, что мол ajax де давно устарел, вот я и решил прояснить для себя этот вопрос.

    Вот, здесь тоже не помешает ваша помощь, братцы. А именно, посоветуйте пожалуйста толковую и актуальную литературу по php, mysql, jquery, ajax. Так, чтобы залить себе эти книги на планшет и читать с пользой в своё удовольствие))
     
    #15 LShadow77, 3 окт 2016
    Последнее редактирование: 3 окт 2016
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Тэк, начнем тогда с ОСи. Ничего не мешает на допотопное железо, тянущее только хрюшку поставить легковесный линукс?
    Это разом решит все проблемы с установкой всего необходимого ПО.

    Например, Lubuntu. Ну или лови, на выбор. Там все или почти все debian-based, так что для них годятся те же мануалы, что и для Убунты, чтоб ты ориентировался при гуглении в случае чего.

    А там видно будет дальше.
    --- Добавлено ---
    Если нужна развернутая аргументация, кроме той, что ты уже уткнулся в прелести сборки стека сервер+пых+мускуль под виндой, то держи.
     
  17. LShadow77

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    )))
    Как-то я экспериментировал с установкой различных дистрибутивов Linux на комп, к слову ещё более допотопный, чем у меня. Так вот, оказалось, что быстрее хрюшки SP2 ничего нет. Ubuntu, Debian как раз таки очень хорошо тормозят на старом железе (да и на относительно новом тоже). Не знаю, может тут всё дело в тяжеловесном UI, однако факт: на доисторическом компе меньше всех тупит только XP SP2.

    P.S. PHP не пошёл!(((((( Ни 7-й, ни 5-й. Пишет, что не является Win32-приложением. Это при том, что качал x86-версию! Сборка VC14. С апачем сборки VC14 такая же байда вышла - не приложение Win32, и всё тут (тоже x86, не 64!)! Пошёл только Apache VC11, однако на оф.сайте PHP предлагают только эту грёбаную VC14!(((
     
  18. LShadow77

    LShadow77 Новичок

    С нами с:
    30 сен 2016
    Сообщения:
    8
    Симпатии:
    0
    На оф.сайте прочитал, что 5.4.0 - последняя версия, которая работает под хр, однако где её скачать, не нашёл, убрали ссылку, похоже. Может у кого сохранился архив?
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    да
    используйте не тяжеловесные
    --- Добавлено ---
    @LShadow77
    на качай пхп под винду http://easyphp.org
     
  20. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Любопытно. Я работал на мамонтах с Ubuntu, Федорой - и вполне.
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    А по ссылке, что я скинул, вы читать не стали, да, ребят? :( Там же легковесные дистрибы.
    У них в системных требованиях Pentium II прописан. КАРЛ! При чем тут Убунту с ее Юнитями? Там в списках нигде нет Убунту.

    Debian_based !== Debian.
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    юнити интерфейс небось поставил и вот.