Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ссылки на файлы / 15 сообщений из 15, страница 1 из 1
17.08.2014, 23:29
    #38722082
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
Здравствуйте!

Посоветуйте как лучше всего поступать.

У меня есть директория в которой лежит сайт.
В разных папках лежат файлы.
Например, так:

/home/username/.../public_html/firmi/funcs.php
/home/username/.../public_html/orders/funcs.php

Так исторически склалось, что файлы с подсключением к базе лежат в директориях и ведут к разным серверам БД:

.../firmi/dbconnect.php
.../orders/dbconnect.php

У меня есть функция в ...\firmi\funcs.php: firmi_get_name($firma_id) {
у нее в содержании есть include('dbconnect.php');
}

если я запускаю эту функцию из директории firmi: hello_firmi.php:
Код: php
1.
2.
inlcude('funcs.php');
echo firmi_get_name(25);


то все ок... я получаю значение функции

!!НО!! если я запускаю эту функцию из директории orders: hello_orders.php:
Код: php
1.
2.
inlcude('../firmi/funcs.php');
echo firmi_get_name(25);


то у меня конечно ничего не выведется... потому что нужно прописывать полный путь к файлу, например, так:
Код: php
1.
2.
inlcude('/home/username/.../public_html/firmi/funcs.php');
echo firmi_get_name(25);



как избежать использование абсолютных ссылок (inlcude('/home/username/.../public_html/firmi/funcs.php');)??
...
Рейтинг: 0 / 0
17.08.2014, 23:32
    #38722083
cras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
в хороших движках принято
$path/you_dir/catalog2/firmi/dbconnect.php
$path/you_dir/catalog2/orders/dbconnect.php
...
Рейтинг: 0 / 0
17.08.2014, 23:34
    #38722084
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
Извиняюсь, ребонк отвлек. Написал ересь в конце.

...

то у меня конечно ничего не выведется... потому что нужно прописывать полный путь к файлу в функции firmi_get_name так:

Код: php
1.
2.
3.
4.
firmi_get_name($firma_id) {
 include('/home/username/.../public_html/firmi/dbconnect.php'); 
 ...
} 



как избежать использование абсолютных путей?... какое решение обычно используется в таком случае??..
...
Рейтинг: 0 / 0
17.08.2014, 23:35
    #38722086
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
crasв хороших движках принято
$path/you_dir/catalog2/firmi/dbconnect.php
$path/you_dir/catalog2/orders/dbconnect.php


но тогда нужно всегда таскать за собой файл в которой будет абсолютный путь к файлу с переменной $path...

а есть ли способ избежать использование абсюлютных путей?...
...
Рейтинг: 0 / 0
17.08.2014, 23:38
    #38722088
cras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
Alexei772, повторюсь $fullpatch = $patch . 'dir/script' . $expr ;
переменные объявлены в единственном конфиге в корне сайта, надеюсь у вас так
...
Рейтинг: 0 / 0
17.08.2014, 23:40
    #38722089
cras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
Alexei772,

конфиг сам определяет где от лежит относительно самого себя ( $patch = $__FILE__ ; )
...
Рейтинг: 0 / 0
17.08.2014, 23:45
    #38722093
cras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
автора есть ли способ избежать использование абсюлютных путей?...
относительно корня проги -- нет, никогда, если у нее больше одного каталога.
...
Рейтинг: 0 / 0
18.08.2014, 00:20
    #38722104
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
crasавтора есть ли способ избежать использование абсюлютных путей?...
относительно корня проги -- нет, никогда, если у нее больше одного каталога.

и если хочется данную переменную вызывать из функций ее наверное нужно сделать глобавльной?...
...
Рейтинг: 0 / 0
18.08.2014, 00:31
    #38722109
cras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
Alexei772, а есть другой способ?

есть конечно
отдавать из функции

забрать из $GLOBALS

написать класс, лучше синглтон

использовать константу

и последнее не юмор -- у них только глобальное пространство имен без ухищрений, но смотрятся криво в коде
...
Рейтинг: 0 / 0
18.08.2014, 12:01
    #38722315
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
crasAlexei772, а есть другой способ?

есть конечно
отдавать из функции

забрать из $GLOBALS

написать класс, лучше синглтон

использовать константу

и последнее не юмор -- у них только глобальное пространство имен без ухищрений, но смотрятся криво в коде


мне идея с константой нравится...
...
Рейтинг: 0 / 0
18.08.2014, 21:35
    #38722972
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
Alexei772crasAlexei772, а есть другой способ?

есть конечно
отдавать из функции

забрать из $GLOBALS

написать класс, лучше синглтон

использовать константу

и последнее не юмор -- у них только глобальное пространство имен без ухищрений, но смотрятся криво в коде


мне идея с константой нравится...

зря, и ересь ты написал в самом начале.

про конфиги подключения к базе.

либо
conf.php -
retrun array(
.....
'dbconfigs' => array(
'dbconf1' => array(....),
'dbconf2' => array(....),
),
.....
);
и потом вкоде на подобе

$db = Database::instance('dbconf1');

На случай кучи конфигов.

либо чтение конфига Config::get('aa.bb.cc'); - означает что в файле aa.php возвращаеться конфигурационный масив , где есть индекс бб, и дальше индекс сс - и вот там и лежит нужная настройка

либо перекрывающиеся конфиги.
baseconf.php
sitepart1.php
sitepart2.php
и загружать базовый , и потом перекрывать его настройки более тонким
но єто не для єтой ситуации вообщемто..єто скажем когда на случай дебаг режима, или размещения на виндоус машине - нужна специфика, тоесть одна специфика на полный цикл отработки запроса.

а что касаеться путей.

в главном файле(с которого начинаеться обработка запроса)
define('DOCROOT', realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR);

везде по коду относительные пути, и для работы лучше всегда строить абсолютные

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

ведь чтобы ты не намудрил, завтра надо будет дописывать ещо чтото, и опять надо будет чтоб какаято относительная ссылка указывала в другое место, - А ИМЕННО относительно другого корня.

поэтому и переделай код,
1define DOCROOT
2$some_path='../../relaytive/path/to/some/folder/'
3 OR $some_file_link = '../path/to/file.php'

4$absolute_link = realpath(DOCROOT.$some_file_link); //можно проверку добавить
если вернуло фолс - битая ссылка = ошибка

5include|other_($absolute_link);
...
Рейтинг: 0 / 0
18.08.2014, 21:49
    #38722987
cras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
alex564657498765453,

Широко распространено заблуждение, что в геометрии Лобачевского параллельные прямые пересекаются.
ru.wikipedia.org
...
Рейтинг: 0 / 0
18.08.2014, 23:17
    #38723016
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
alex564657498765453,

полmзуйся YML
...
Рейтинг: 0 / 0
19.08.2014, 11:11
    #38723223
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
ScareCrowalex564657498765453,

полmзуйся YML

Знаешь, а ведь добрая часть програмистов не умеет вслепую набирать текст, а из тех что умеют, добрая часть только на одном языке. и ведь все(и я) долго упираються чтобы научиться.
а ведь оно реально помогает... прежде всего быстрее реализовуешь мысль буквами, а главное, нервы не так напрягаються(анатомическая особенность) - изза того что голова туда сюда не наклоняеться, ибо такая нагрузка - кивать головой/глазами не естественна для человека.

но люди упираються. хотя надо учиться програмистам и всем для кого ввод информации с клавиатуры одно из основных занятий при работе с ПК.

а начот УМЛ... да хз на самам деле...я вот слышал много годами (люблю послушать всех людей) про крутую модификацию языка javascript, забыл название, но это ...ааа, кофискрипт.

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

на что услышал - тада...и ваще...и ещо расказали кучу минусов, изза чего они решили забить на мнение начинателя этого проекта, и переделывать код на джаваскрипт чистый, ибо эти плюсы не настолько велики по сравнению с минусами, а учитывая что новых людей надо ему учить, да и всёравно часто берут готовый код который надо править а он на чистом джаваскрипте, - короче сносят нафиг.

Я к чему - если народ гутари т надо делать так, тут не факт что ты оказался в среде очень умных людей, скорей всего просто в толпе...секогдня они кричат сникерс, завтра по телеку покажут рекламу про баунти, и все будут покупать баунти, клетчатые рубашки (этим летом Киев) трендовые, и говорить что я лапух что я себе такой не купил, хотя эти же упыри говорили что клетчатая(мелкая клетка) рубашка гавно позапрошлым летом, когда я две себе такие купил - ибо рекламу не показали.

Так что про умл слышал, но хз - может толпа воет просто :)

Твоему мнению я доверяю, и если ты будешь любезен описать почему, нужно отказаться от конфигов на пхп возвращающих масив, в пользу умл - буду очень рад.

ЗЫ
одну причину я знаю...меня напрягает невозможность перенесения нескольких настроек на шелл(подключение кстате к базе :) ), а фоновые процесы на сервере у меня на шеле написаны - тупо пыстрее работа с файловой системой, и передача файлов по сети и если надо в несколько паралельных процессов.

но это плюс любого распространённого текстового/или даже бинарного формата, для работы с которым существует штатные средства в разных языках и оболочках
...
Рейтинг: 0 / 0
27.08.2014, 02:21
    #38729665
Alexei772
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ссылки на файлы
dirname(__FILE__) помогло очень! спасибо! :)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Ссылки на файлы / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]