BoriHagen, не надо тупить.
"работать под старую версию" не значит использовать устаревшее расширение и сыпать ошибками при каждом вызове функции.
в твоей старой версии вполне можно использовать нормальные функции для работы с БД, что ты и должен делать.
Melkij, я уже год как сделал ПР в документацию, чтобы из неё выкинули это адово array of strings, которое в переводе превращается в "массив строк", что действительно сбивает с толку.
И этот чувак непервый, кто на это натыкается.
Но процесс там очень не быстрый.
Может, через годика два поправят, и будет "массив значений".
Код конечно кривой и бессмысленный, но ты хотя бы пробовал вывести что он у тебя там делает?
ты пробовал вывести $sql?
пробовал вывести $row_two['Status']? $row_two?
Ой, тут столько всего - не знаю даже за что вперёд хвататься.
Начнем с того, что вордпресс, джумла, phpbb, dle - это всё эталонный говнокод, написанный в позапрошлом десятилетии. К ООП не имеет вообще никакого отношения. Писали их как раз никакие не специалисты, а новички, и теперь эти CMS расхлёбывают последствия.
Если хочешь посмотреть на пример нормального ООП приожения - смотри код, написанный на Симфони.
Само наличие единого конфиг файла ни о чем не говорит. Я выше имел в виду не этот файл, а передачу в классы. У тебя почему-то в голове прочно эти два момента связаны между собой. Но между ними нет никакой связи! Файл может быть один, но к объектам это не имеет никакого отношения.
Когда я писал про "глобальный конфиг" я имел в виду не файл, а доступ к нему из классов.
Ты вполне можешь иметь один файл, с этим вопросов нет. грузишь его в пхп и присваиваешь переменной. Вот об этой переменной мы и говорим.
Вопрос именно в доступе к этой переменной из классов.
Если тебе всё неудобно - используй global $config
Да, это говнокод. Но как я выше писал, один говнокод ничем не хуже другого. Разбираться в его сортах - занятие малопродуктивное.
Но если хочешь учить нормальное программирование, то ближе всего к нему твой п.2, но опять же - не весь конфиг, а только нужные элементы.
Если тебе в кассе нужен весь конфиг - это в первую очередь значит что у тебя классы болеют слоновой болезнью и им надо срочно худеть. Классы должны быть очень специализированными и выполнять какую-то одну задачу, а не сразу миллион. А для одной задачи весь конфиг не требуется.
К сожалению, "знать, что такое класс" - это не ООП.
Чтобы играть в шахматы, недостаточно знать, как ходят фигуры. Сама игра гораздо, на порядки сложнее.
Объектно-ориентированное программирование гораздо сложнее чем тупо синтаксис объектов.
Напихать несколько функций в класс - это не ООП. Это та же процедурщина, вид сбоку. Поэтому-то ты и видишь те же грабли, разумеется.
В общем, пока ты не избавишься от дурацкой идеи про "глобальный конфиг, доступный всем без разбору", продолжать этот разговор бессмысленно.
Для своего карго-культ процедурного ООП можешь использовать любой вариант: хоть свои инклюды (никакого обращения к диску там разумеется нет, ОС всё кэширует) хоть статику от megakor, хоть наследование. Эти варианты все одинаково плохие, без разницы, какой выбрать
Есть. Этот способ называется "говнокод".
Тебе надо понять, что класс, который подгружает единый глобальный конфиг, это УЖЕ плохо.
Передавай в классы не глобальный конфиг а только те зависимости, которые нужны этому классу
Если любишь читать - купи или скачай книжки Боба Мартина. Хотя конечно тебе ещё рановато, поскольку у тебя пока нету классов а есть коллекции функций, и код чисто процедурный. и именно из-за процедурного образа мыслей ты и думаешь что твой вопрос про инклюды. Хотя они к твоим проблемам не имеют никакого отношения.
Вообще, твоя основная проблема в том, что ты сам не понимаешь, про что спрашиваешь.
По сути твой вопрос про архитектуру приложения, но ты себе вбил в голову что твой вопрос про инклюды.
Забудь ты про инклюды. Класс, который инклюдит в конструкторе глобальный конфиг - это сразу говнокод. Даже если ты напишешь кэширующее решение, типа предложенного Роман Сарваров, и решишь свою "проблему" с жестким диском.
НЕТ никакой проблемы написать
$class = new class1($confOpt1, $confOpt2,$arg1, $arg2, $arg3...$arg100500);
ты эту проблему себе выдумал.
Больше того, на самом деле всё наоборот: проблема - это когда зависимости классе не прописаны явно в конструкторе, а появляются внутри из воздуха. И поменять скажем одну на другую становится проблемой.
Но чтобы понять это всё, тебе надо учить ООП. А это немного сложнее, чем выучить синтакс оператора include
Лентюй, забавно как по реакции на ответы чётко виден уровень местных списиалистов.
То есть для тебя предел мечтаний - это global в красивой упаковке. Так и запишем :)