Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762

как работает этот код?

26.10.2012, 17:11. Показов 1675. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
set_include_path(get_include_path().PATH_SEPARATOR.'application/controllers'
                                        .PATH_SEPARATOR.'application/models'
                                        .PATH_SEPARATOR.'application/views');
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2012, 17:11
Ответы с готовыми решениями:

Как будет выглядеть этот код на C++ в PHP?
#include <iostream> #include <Windows.h> using namespace std; class Train //1 поезд { char punkt ; //пункт...

Объясните как работает этот код?
У меня этот код работает, но я не понимаю как!? И что за символы, могли бы вы по полочкам разложить мне. Буду благодарен. RewriteEngine...

Почему этот код не работает?
$query = Addproduct::find(); if ($maincatalog != NULL) $query->where(); if ($listproduct != NULL) ...

15
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
26.10.2012, 17:14
alpex, а что, собственно непонятно то?
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
26.10.2012, 17:31  [ТС]
да чет не совсем понимаю для чего он нужен
это что после этого кода уже не нужно писать
PHP
1
require_once '/application/controllers/FrontControllers.php';
а можно просто написать
PHP
1
require_once 'FrontControllers.php';
?
А если я захочу добавить еще одну папку например Libraries, то тогда мне нужно и сюда тоже ее добавить?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
26.10.2012, 17:34
там несколько путей разделёных : для линукса или ; для виндовса.
Просто конкатенация строки

Добавлено через 1 минуту
http://php.net/manual/ru/function.include.php
тут написано вкаком порядке рповеряются директоии
1
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
26.10.2012, 17:54  [ТС]
А если написать так
PHP
1
2
3
4
5
6
7
8
<?php
    set_include_path(get_include_path().PATH_SEPARATOR.'application/controllers'
                                       .PATH_SEPARATOR.'application/models'
                                       .PATH_SEPARATOR.'application/views'
                                       .PATH_SEPARATOR.'libraries');
    function __autoload ($class){
        require_once $class.".php";
    }
То это будет полноценный уже полностью законченный автозагрузчик классов, который будет искать классы в указанных директориях?

Добавлено через 4 минуты
или это не самый лучший способ?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
26.10.2012, 18:01
Цитата Сообщение от alpex Посмотреть сообщение
или это не самый лучший способ?
Имхо, это не самый лучший способ. Например, понадобился мне класс FooBar. Из какой директории он мне его загрузит по факту? Где первый найдёт. Само собой, я никогда не создам в разных директориях два разных класса с одинаковыми именами. Имхо, не должно быть допустимо классу находиться чёрт знает где.
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
26.10.2012, 18:06  [ТС]
Ну так а как делать , ведь автолоад может быть только один а папок где лежат классы несколько,не писать же путь к каждому классу перед инициализацией?
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
26.10.2012, 18:14
вот так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function __autoload($class_name)
{
    $realpath = ВАШ_DOCUMENTROOT_PATH . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $class_name) . '.php';
 
    if (!file_exists($realpath))
    {
        throw new RuntimeException('Автозагрузка: не найден подключаемый файл по адресу: ' . $realpath);
    }
 
    require_once $realpath;
}
 
 
$obj = new Path_To_Class();
соответственно класс лежит в /Path/To/Class.php

или использовать пространства имен.

а то, что выше написано - говнокод
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
26.10.2012, 18:14
Цитата Сообщение от alpex Посмотреть сообщение
ведь автолоад может быть только один
Сколько угодно. spl_autoload_register()
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
26.10.2012, 18:16
в имени класса закладывайте путь к файлу. А в автозагрузке сройте путь по имени.

Добавлено через 1 минуту
собственно я опоздал

Василий Макогон, как раз описал способ)
0
26.10.2012, 18:21

Не по теме:

Главное не увлекаться, чтобы не получилось Very_Long_Ugly_Stupid_Class_Name.

1
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
26.10.2012, 23:27  [ТС]
так что получается мне нужно класс называть
PHP
1
class Application_controllers_frontcontroller
?
Что то я посмотрел несколько фреймворков и не встретил такого рода названий
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
27.10.2012, 01:00
Цитата Сообщение от alpex Посмотреть сообщение
так что получается мне нужно класс называть
PHP
1
class Application_controllers_frontcontroller
?
Что то я посмотрел несколько фреймворков и не встретил такого рода названий
это нормально и удобно. поверьте.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
27.10.2012, 07:40
Цитата Сообщение от alpex Посмотреть сообщение
PHP
1
class Application_controllers_frontcontroller
Он уже и так контроллер. Зачем дублировать?
PHP
1
class Application_controllers_front
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
27.10.2012, 13:06
Цитата Сообщение от Vovan-VE Посмотреть сообщение

Не по теме:

Главное не увлекаться, чтобы не получилось Very_Long_Ugly_Stupid_Class_Name.

почему не по теме? как раз по теме. это нормальная практика, ничего страшного в этом нет.
вот я так же пишу:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
class Krugozor_Module_Advert_Controller_View extends Krugozor_Module_Advert_Controller_FrontendCommon
{
    public function run()
    {
        parent::common();
 
        $this->getView()->loadI18n('Common/FrontendGeneral', 'Advert/FrontendCommon', $this->getVirtualControllerPath());
 
        if ($result = $this->checkIdOnValid())
        {
            return $result;
        }
 
        $advert_data = $this->getMapper('Advert/Advert')->findByIdUrl(
            $this->getRequest()->getRequest('id'), $this->getRequest()->getRequest('category_url')
        );
 
        if (!$advert_data['advert']->getId())
        {
            return $this->createNotification()
                        ->setType('alert')
                        ->setMessage($this->getView()->lang['notification']['advert_does_not_exist'])
                        ->setNotificationUrl($this->getCurrentUser()->isGuest()
                                             ? '/categories/'
                                             : '/my/adverts/')
                        ->run();
        }
 
        foreach ($advert_data as $key => $object)
        {
            $this->getView()->$key = $object;
        }
 
        // Получаем дерево объектов от корневой категории до категории $category->getId()
        $path_to_category = $this->getMapper('Category/Category')->loadPath($this->getView()->category->getId());
 
        $cat_names = Krugozor_Module_Category_Model_Category::getElementsInTree($path_to_category, 'getName');
 
        $this->initTitle();
        $this->getView()->getHelper('Html_Title')->add($cat_names);
        $this->getView()->getHelper('Html_Title')->add($this->getView()->advert->getHeader());
 
        $this->getView()->current_user = $this->getCurrentUser();
        $this->getView()->category_url = $this->getRequest()->getRequest('category_url');
        $this->getView()->path_to_category = $path_to_category;
 
        // похожие объявления
        $this->getView()->similar_adverts = $this->getMapper('Advert/Advert')->finfSimilarAdverts(
            $advert_data['advert'], $advert_data['user']
        );
 
        // Если пользователь скрыл объявление, то уведомляем об этом
        if (!$this->getView()->advert->getActive())
        {
            $redirect = $this->createNotification();
            $redirect->setType('warning');
 
            if ($this->getView()->advert->getIdUser() == $this->getCurrentUser()->getId())
            {
                $redirect->setMessage($this->getView()->lang['notification']['advert_close_for_author']);
                $redirect->addParam('advert_header', $this->getView()->advert->getHeader());
            }
            else
            {
                $redirect->setMessage($this->getView()->lang['notification']['advert_close_for_user']);
            }
 
            $this->getView()->setNotification($redirect);
        }
        // иначе показ объявления увеличиваем на 1
        else
        {
            if (!$this->getCurrentUser()->isGuest() && $advert_data['advert']->getIdUser() != $this->getCurrentUser()->getId() OR
                 $this->getCurrentUser()->isGuest())
            {
                $this->getMapper('Advert/Advert')->incrementViewCount($advert_data['advert']);
            }
        }
 
        return $this->getView();
    }
}
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
27.10.2012, 13:24
Цитата Сообщение от Василий Макогон Посмотреть сообщение
это нормальная практика, ничего страшного в этом нет.
Имена длинее трёх слов (в крайнем случае четырёх) лично у меня вызывают .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.10.2012, 13:24
Помогаю со студенческими работами здесь

Очередной код с возможным вирусом. Как думаете этот код опасен?
&lt;?php // no direct access defined('_JEXEC') or die('Restricted access'); ?&gt; &lt;ul class=&quot;sections&lt;?php echo...

как переделать этот код?
вот мой код для ленты новостей : файл index.php &lt;!DOCTYPE html&gt; &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt; ...

Как внедрить этот код?
дорогие программисты подскажите как внедрить этот код &lt;? /********************************************/ /*Welcome to Anti Mate PHP...

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

Как написать этот код коротко?
&lt;form name=&quot;form1&quot; method=&quot;post&quot; action=&quot;add_meropri.php&quot; id=&quot;my_form&quot;&gt; &lt;table border=&quot;0&quot; class=&quot;tableAdd&quot; id=&quot;next_table&quot;&gt; &lt;tr&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru