Золотые слова.
Ато понатыкают объектов ради объектов и считают что это круто..
Вместо того чтобы нормально продума, а нужен ли тут вообще объект.
ООП головного мозга - неизлечимо.
А меж тем есть и противники ООП.
Ну я не противник ООП, в С++ я их очень люблю (ООП + паттерн Wrapper), что мне очень упрощает жизнь, ну опять же, когда это востребовано.
Смысл делать объект со статическим методом вывода строки в консоль? Не проще сразу функцию вызвать? Так же и здесь, получается предлагается сделать класс, который только и умеет, что соединяться с мускулом, и смысл?
Ну а что? Если он C++ знает, а это объектный язык то пусть и пишет в привычной для себя форме. Думаю с объектами ему будет проще работать.
Ну Вы, конечно, сравнили С++ ООП и PHP ООП... Привычная для меня форма - это строгая типизация данных, привычные области видимости, глобальные переменные, инклюды и т.д. Лучше пока что функциями сделаю, тем более задача довольно тривиальная, да к чему там вводить ООП? Я понимаю, если бы полиморфизм использовал, наследование, много модулей...
никто не увидел что после инклуда тупо отсутствует ; ??
вроде пробежал всю тему никто не указал
потому и не подрубается из отдельного файла
надо нормальными редакторами пользоваться
Я писал в редакторе форума, мог что-то не указать. Все есть в проекте, все точки с запятыми и т.д., как бы программирование знаю. Здесь опечатка просто.
Вобщем пиши как и что получилось наковырять.
Со стороны довольно интересно наблюдать сдвиг логики.
Да наковырял пока по объявлениям global в функциях, где используются переменные, т.к. другой метод не очень подходит, поскольку все таки, я считаю, что объявлять везде переменные для соединения с мускулом есть нелогично, они должны быть видны отовсюду, на то, в принципе, и было разделение... Пока есть косяки, но в БД уже пишет, однако остались косяки с отказом формировать страницу...
DeepVarvar пишет:
На самом деле на пыха гнать не надо - тут есть свои нюансы реализации интерпретируемого языка, что накладывает такие вот особенности очень похожие на костыли.
А все потому, что они не хотят отказываться от старого ядра сразу, оставляя поддержку предыдущих версий.
Да тут не гон, скорее недопонимание... Опять же, javascript как-то более логичен (опять же с точки зрения сишника ), а тут не до конца еще...
В общем, всем огромное спасибо за помощь! Буду курить дальше...
lexdevel, что бы переменная стала глобальная (была видна в любой области видимости) её нужно записать в суперглобальный массив $GLOBALS или же использовать ключевое слово global как я делал в своём примере.
Если переменна находится не в функции, а просто в php файле - это не значит что она в глобальной области видимости. Она в области видимости этого файла, а если уже подключить этот файл с помощью include (или каким другим способом) она будет находится в области видимости файла в котором было произведено подключение, но никак не в области видимости функции описанной в этом же файле.
DeepVarvar, ну там у меня хотябы понятно для чего классы и методы писались, а тут функция ради функции. lexdevel, почему не логично? У каждой функции, класса, метода класса своя область видимости. Область видимости не ограничивается файлом.
Не, это как раз понятно, не понятно, то, что я объявил (ну и у Вас было показано в примере) в зоне видимости выше (вроде как глобально) переменные, а они не видны из функций... Вот если в функции использовать переменные, то, понятное дело, они извне не видны)
lexdevel, ничего у тебя не будет видно.
Переменные $mysql_host, $mysql_user, $mysql_pass и $mysql_base не видны внутри функции registerUser() потому что у них разные области видимости.
Как заставить их быть видными внутри функции: использовать ключевое слово global
Выглядеть будет так:
Вот теперь всё будет работать. Но использовать ключевое слово global крайне не рекомендуется, это деает код жёстко привязанным и не удобным. В дальнейшем такой код будет сложно модифицировать.
Странно... Вроде в одной зоне видимости, хотя не буду спорить, мне просто сложно это понять, вот и все... Спасибо за ответ) Если не рекомендуется, то лучше оставлю на "план Б")
1) Все переменные нет нужды объявлять в начале. Их можно объявлять на лету динамически прямо по ходу выполнения. Понадобилась переменная - декларируй.
2) Существует область видимости, и переменная объявленная внутри ф-ции не видна извне. А те кто объявлен вне ф-ции не видны внутри неё.
3) Вместо пошаговой отладки используй конструкцию вида: exit("Check message! Value = " . $var);
4) Примеры использования у нас не очень, сейчас найду что-то ближе к теме с нормальным перехватом ошибок.
1) Нет нужны - это не значит, что это есть ошибка, просто привычка такая уже выработалась
2) Я тоже читал про это, даже на сайте здесь урок по зонам видимости, но опять же, в моем случае - все должно быть видно
3) Я пока что сделал функцию эха пошагово на экран, заполняел по типу "<li>$message</li>", так и отловил, что функция "зависает"
4) Пример придумал вообще самый простой, чтобы просто потестить и не заморачиваться. БД, Таблица юзеров 3 поля (Id, Login, Password), никакого шифрования/хэширования и т.д. В общем, чисто для теста чтобы минимум времени потратить и разобраться в проблеме...
А вообще, спасибо за ответ. И за поиски примера) Может реально поможет)
Эм... я просто не написал этого в сообщении, но мануалы читать умею, поэтому поставил коммент, что возвращаю false. Проверяю я ошибки)
Суть в том, что функция "зависает" и дальше обработка не происходит.
Тут вся суть в том, что 2 файла, я хз почему, т.к. ситуация нелогичная абсолютно. Если вкинуть в один файл, то все работает.
Как-то вы странно коннектитесь к базе через mysqli
Почитайте http://www.php.net/manual/ru/mysqli.quickstart.connections.php
Да, я видел, но мне непривычен в PHP ООП интерфейс, как я уже говорил, к тому же разрабы специально для таких как я оставили функциональный интерфейс. Но суть вопроса не в этом
Я сразу прошу прощения за, наверное, идиотский вопрос, однако тема всплыла, надо порешать, гугл не помог.
Ситуация: я сам c++ разработчик, но так получилось, что надо на PHP сделать регистрацию. Ну и пошел по сишному)
Дабы не углубляться в процесс изучения ООП на PHP, решил сделать эту тривиальную задачу функционально.