Всем здравствуйте! Пожалуйста, помогите разобраться новичку в чертовщине! Весь мозг себе порвал, буквально с ума схожу, но НЕ ПОНИМАЮ, что происходит! Собственно, вот сам код: PHP: <?php $SKIN = 1; class CSkin { var $BkgrImg; var $BkgrCol; var $t; var $YeschoOdnoKonchennoeSvjystvo; function CSkin($BkgrNo_,$BkgrCol_) { $No = $BkgrNo_; if ($BkgrNo_<10) $No = "0".$BkgrNo_; $this->$BkgrImg = "images/skin".$No."/background.jpg"; $this->$BkgrCol = $BkgrCol_; echo $this->$BkgrImg."<br>";///////////////// echo $this->$BkgrCol."<br>";////////////////// echo $this->$t."<br>";////////////////////// echo $this->$YeschoOdnoKonchennoeSvjystvo."<br><br>";////////////////////// } } $Skins[0] = new CSkin(0,"black"); $Skins[1] = new CSkin(1,"#7F8391"); $Skins[2] = new CSkin(2,"#252222"); $Sk = $Skins[$SKIN]; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Что за грёбаный баг???</title> <style type="text/css"> .main_body { background-color:<?=$Sk->$BkgrCol?>; background-image:url(<?="\"".$Sk->$BkgrImg."\""?>); background-size:cover } </style> </head> <body class="main_body"> </body> </html> *Строки с комментариями наподобие "/////////////////" поместил для отладки, чтобы увидеть значения свойств. Очень простой код, не правда ли? Просто объявляю класс с заданными свойствами. Конструктор свойству $BkgrImg присваивает строковое значение пути к изображению, а свойству $BkgrCol - заданный цвет фона. Однако результат обескураживает своей крайней степенью неожиданности: Иными словами, все свойства, объявленные в классе, с какого-то перепугу рассматриваются интерпретатором как одно свойство, но с разными ссылками на него! И стоит присвоить значение одному из них, то это значение тут же принимают остальные!!! После присваивания значения свойству $BkgrCol, все остальные свойства ($BkgrImg, $t,...) автоматически принимают такое же!!! Скажите пожалуйста, что я упустил из виду? Или это действительно баг интерпретатора (случай 1 на миллион)? Помогите мне пожалуйста!!!
var_dump() --- Добавлено --- var_dump() это ещё старее, чем труселя моей мёртвой бабушки. --- Добавлено --- __construct() --- Добавлено --- подчёркивания после переменной это авторский стиль? Нужно сменить книжку или по чему ты там делаешь. Это всё явно для какой-то очень старой версии пхп. Ща уже новая вышла после той, что вышла после той, что вот такой синтаксис имела. Т.е. сильно старая. Не надо так писать уже. --- Добавлено --- лишнее попробуй без этого, может всё наладится. вот так
Спасибо, действительно наладилось! Однако теперь какой-то осадок у меня остался по поводу php. Если и дальше будут такие подвохи неочевидные, когда вроде бы всё правильно, а работает не так...
Пишет, что версия 4.1 или что-то вроде того. Качал php triad, вроде последний релиз. Не знал, что в нём php старый. И вообще что-либо современное в инете по данной теме очень сложно найти, поисковики сплошь одно старьё выдают(((
Вполне очевидные. Просто книжку надо по современному PHP почитать. Книги по языку обычно через год выкидывать можно. Хранить только классику а-ля Кнута имеет смысл Поэтому лучше просто читать php.net, там современные
Можно и так сказать. В С++ я так отделяю параметры, передаваемые методам от полей класса с аналогичными именами - очень удобно на самом деле)) А в пхп по привычке перенёс. --- Добавлено --- Вероятно, да. Однако в книгах, как правило, подход подачи материала более систематичен, чем на сайтах. В той книге, которую я сейчас читаю, кстати, до раздела пхп ещё не добрался))
Странно, что когда ты его ставил, у тебя песок не посыпался из системника. Все равно что придти в музей, увидеть австралопитека и заиметь осадочек на человечество.
Хочу уметь делать сайты. Если что, то в кодинге как таковом я не новичёк, на C++, assembler достаточно много в своё время нащёлкал. Ну да, видимо так) Теперь снесу этот триад и поставлю свежие php, apache и mysql по отдельности. К слову вопрос: слышал, что технология ajax тоже устарела, это правда? И если да, то что вместо неё? Сорри, если это вопрос чайника, но мне, как новичку в веб-кодинге такие вопросы задавать можно, я думаю))
Нет. Может имелось в виду использование ajax для реализации чатов? Теперь для этого есть веб-сокеты. Можете поставить руками, можете взять open server или xampp, там последние версии php. Самая большая проблема вашего кода - то, что такой синтаксис PHP: $this->$BkgrImg="images/skin".$No."/background.jpg"; тоже допустим, но означает сейчас совсем не то, что вы имели в виду.
тогда начни изучать php версии как минимум 5.4 а лучше 7. с другой стороны Angular не связан с php вообще, как и всё фронтэндовое. Но платят там не меньше. Ты подумай, зачем тебе че, и вперде.
ajax - это обычный запрос к серверу из браузера, но: 1) Асинхронный 2) Фоновый Тут принципиально нечему устаревать. Просто это такой вот тип запроса. Этот вот форум на 95% состоит из этого вашего аякса. Просто потому что фоновые запросы это удобно, красиво, экономично, гибко, позволяет задавать страничке поведение как у десктопного софта. Превращая веб-страницу из статичного, но красивого бревна в полноценный тонкий/толстый клиент. Другое дело, что да, для клиент-серверной связки появились дополнительные технологии как те же вебсокеты. Но это не "новый ajax". Это вебсокеты. Это разные вещи, они по-разному работают, они служат для разных целей. Вебсокеты нужны там, где накладно/глупо использовать AJAX. А AJAX нужен там, где накладно/глупо использовать вебсокеты. Так, например, для использования AJAX нам не нужно ничего городить на сервере. Для него это обычный запрос. В то же время для использования вебсокетов нам нужно предусмотреть, чтобы сервер умел с ними работать. То бишь либо юзать библиотеки, либо велосипедить свою обвязку.
@Fell-x27, спасибо за инфу. А то недавно мне один товарищ накапал, что мол ajax де давно устарел, вот я и решил прояснить для себя этот вопрос. Вот, здесь тоже не помешает ваша помощь, братцы. А именно, посоветуйте пожалуйста толковую и актуальную литературу по php, mysql, jquery, ajax. Так, чтобы залить себе эти книги на планшет и читать с пользой в своё удовольствие))
Тэк, начнем тогда с ОСи. Ничего не мешает на допотопное железо, тянущее только хрюшку поставить легковесный линукс? Это разом решит все проблемы с установкой всего необходимого ПО. Например, Lubuntu. Ну или лови, на выбор. Там все или почти все debian-based, так что для них годятся те же мануалы, что и для Убунты, чтоб ты ориентировался при гуглении в случае чего. А там видно будет дальше. --- Добавлено --- Если нужна развернутая аргументация, кроме той, что ты уже уткнулся в прелести сборки стека сервер+пых+мускуль под виндой, то держи.
))) Как-то я экспериментировал с установкой различных дистрибутивов Linux на комп, к слову ещё более допотопный, чем у меня. Так вот, оказалось, что быстрее хрюшки SP2 ничего нет. Ubuntu, Debian как раз таки очень хорошо тормозят на старом железе (да и на относительно новом тоже). Не знаю, может тут всё дело в тяжеловесном UI, однако факт: на доисторическом компе меньше всех тупит только XP SP2. P.S. PHP не пошёл!(((((( Ни 7-й, ни 5-й. Пишет, что не является Win32-приложением. Это при том, что качал x86-версию! Сборка VC14. С апачем сборки VC14 такая же байда вышла - не приложение Win32, и всё тут (тоже x86, не 64!)! Пошёл только Apache VC11, однако на оф.сайте PHP предлагают только эту грёбаную VC14!(((
На оф.сайте прочитал, что 5.4.0 - последняя версия, которая работает под хр, однако где её скачать, не нашёл, убрали ссылку, похоже. Может у кого сохранился архив?
да используйте не тяжеловесные --- Добавлено --- @LShadow77 на качай пхп под винду http://easyphp.org
А по ссылке, что я скинул, вы читать не стали, да, ребят? Там же легковесные дистрибы. У них в системных требованиях Pentium II прописан. КАРЛ! При чем тут Убунту с ее Юнитями? Там в списках нигде нет Убунту. Debian_based !== Debian.