Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Организация разработки крупного проекта через API [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
Zuldek
Отправлено: 09 Октября, 2012 - 13:53:42
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Не понимаю причем тут способ организации api и http-протокол Не понял
Ну организуйте хоть на ftp, что от этого изменится? Причем тут вообще протокол если речь идет о принципе модульности
Так или иначе вам придется открыть интерфейсы в виде методов через которые модуль будет получать данные и возвращать результат.
Ну зазендите скрипты, если станет спокойнее

(Отредактировано автором: 09 Октября, 2012 - 13:56:22)

 
 Top
testergame
Отправлено: 09 Октября, 2012 - 14:04:04
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Zuldek пишет:
А зачем разработчику давать возможность загружать модули на боевой сервер? Они пишутся таким образом чтобы их можно было протестировать как модуль, независимо от основного проекта, иначе это уже его неправильная организация изначально.


Конечно вся разработка расположена на отдельном сервере без локального доступа к боевому серверу.

Zuldek пишет:
Если у вас идут инклуды подобного: include somethingwithoutmygamedoesnotwor k.php
Содержащие основную массу всех классов движка то это уже неправильная организация.


Организация проекта здесь не причем, суть вопроса в другом.
Еще раз привожу пример:
Программист #1 пишет целый класс для работы с чатом, например class.chat.php
Программисту #2 нужен один из методов этого класса для выполнение в файле battle_end.php.

Вот тут то и наступает тот критический момент, что для программиста #2 какие бы мы не организовывали интерфейсы и тому прочее все равно в файле battle_end.php так или иначе будет произведен include класса class.chat.php. А так как будет произведен инклуд, то и содержимое файла можно будет запросто получить.
(Добавление)
Zuldek пишет:
Не понимаю причем тут способ организации api и http-протокол Не понял
Ну организуйте хоть на ftp, что от этого изменится?


Как я уже писал выше на примере battle_end.php

Если подобный метод делать через API, то мы вроде выполняем все тот же метод класса class.chat.php, но доступа к самому классу не имеем, проще говоря мы не инклудим класс тем самым не получаем доступа к исходному коду класса.
 
 Top
DlTA
Отправлено: 09 Октября, 2012 - 15:08:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




можно налабать чет свое
по типу:
$result = call($modulMethod,$propList);
и запичкать этим весь проект,
а в режиме разработки серавно придется делать заглушки, которые будут возвращать рез. при отсутствии соотв. модуля/метода.

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

(Отредактировано автором: 09 Октября, 2012 - 15:10:10)

 
 Top
Zuldek
Отправлено: 09 Октября, 2012 - 15:20:15
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




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

Хотя все это выглядит при разработке проектов на php таким космосом... . Лицензировать проект + письменные соглашения с разработчиками и спокойно работать.

(Отредактировано автором: 09 Октября, 2012 - 15:26:59)

 
 Top
caballero
Отправлено: 09 Октября, 2012 - 15:29:18
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
и требовать с каждого разраба, клипать загрушки, которые и будут распростроняться повсеместно

и тратить в два раза больше времени на подготовку зашлушек
а потом еще разбиратся почему с заглушкой и без заглушки по разному работает

быстрее уж самому написать все.

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


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Мелкий Супермодератор
Отправлено: 09 Октября, 2012 - 15:32:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Вообще-то, весь этот вопрос - сугубо юридический. Юридическими методами его и надо решать.

testergame пишет:
или напрямую обращается к программисту #1 с просьбой сделать данный метод

Видите здесь уязвимость и причину бессмысленности всех технических ухищрений?
Во-вторых - вы планируете лично проводить обзор каждого добавленного в код байта?

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


-----
PostgreSQL DBA
 
 Top
tato
Отправлено: 10 Октября, 2012 - 00:36:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




testergame пишет:
В данном подходе, что мешает вновь прибывшему программисту просканить и скачать это файл, а за одно и все остальные файлы к которым он по задумке вроде не имеет доступа?


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


-----
просто ?: сложно
 
 Top
Okula
Отправлено: 10 Октября, 2012 - 07:29:56
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Почему никто ничего не сказал про интерфейсы?
Например, у тебя есть класс контроллер и интерфейс для классов моделей:
PHP:
скопировать код в буфер обмена
  1. // твой класс контроллер
  2.  
  3. class Controller {
  4.    
  5.     protected $var;
  6.     protected $var2;
  7.  
  8.     public function __construct($var, $var2) {
  9.         $this->var = $var;
  10.         $this->var2 = $var2;
  11.        
  12.         // put your php code
  13.     }
  14.    
  15. }
  16.  
  17. // интерфейс для модели
  18.  
  19. interface ViewInterface {
  20.    
  21.     /**
  22.      * получить массив для шаблонизатора
  23.      */
  24.     public function getArrayResult();
  25.    
  26.     /**
  27.      * получить имя файла шаблона
  28.      */
  29.     public function getTampleteName();
  30. }

Разработчик №1 создайт свою модель для чата реализуя твой интерфейс модели и реализуя свой интерфес для доступа к свойствам другим разработчикам:
PHP:
скопировать код в буфер обмена
  1. // интерфейс и класс чата разработчика №1
  2.  
  3. interface ChatInterface {
  4.    
  5.     /**
  6.      * Отправка сообщения
  7.      */
  8.     public function send();
  9.    
  10.     /**
  11.      * получить список сообщений
  12.      */
  13.     public function getMessage();
  14. }
  15.  
  16. class Chat extends Controller implements ChatInterface, ViewInterface {
  17.    
  18.     private $argument = array();
  19.     private $template;
  20.  
  21.     public function __construct($var, $var2) {
  22.         parent::__construct($var, $var2);
  23.        
  24.         $this->template = 'template_name.hmtl';
  25.     }
  26.  
  27.     /**
  28.      * получить массив для шаблонизатора
  29.      * @return array
  30.      */
  31.     public function getArrayResult() {
  32.         return $this->argument;
  33.     }
  34.    
  35.     /**
  36.      * получить имя файла шаблона
  37.      * @return string
  38.      */
  39.     public function getTampleteName() {
  40.         return $this->template;
  41.     }
  42.  
  43.     /**
  44.      * Отправка сообщения
  45.      */
  46.     public function send() {
  47.         // put your php code
  48.     }
  49.    
  50.     /**
  51.      * получить список сообщений
  52.      */
  53.     public function getMessage() {
  54.         // put your php code
  55.     }
  56.    
  57.     protected function filtrationMessage($mess) {
  58.         // put your php code
  59.         return $mess;
  60.     }
  61.    
  62. }

Вот так вот и общаетесь через интерфейсы. Главное всё документировать и проблем не будет + у тебя должна быть составлена чёткая, удобная структура.
 
 Top
tato
Отправлено: 10 Октября, 2012 - 08:35:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Okula пишет:
Почему никто ничего не сказал про интерфейсы?


Потому-что о интерфейсах и абстракциях Я предложил почитать еще первым комментом.

(Отредактировано автором: 10 Октября, 2012 - 08:35:45)



-----
просто ?: сложно
 
 Top
Haron
Отправлено: 11 Ноября, 2012 - 18:18:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




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

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

А меры подобные описанным здесь - не помогут, увы. Если что-то принципиально можно слить - оно будет слито. Хоть ты за 100500 обсракций выноси свои классы, хоть огораживай фундаментально доступ. И даже если удастся обеспечить достойную защиту на таком уровне, она начнёт неиллюзорно мешать разработке. Знаете притчу про "гнилое ядро"?

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


-----
И чё?
 
 Top
DlTA
Отправлено: 11 Ноября, 2012 - 22:48:23
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




добавлю еще чучуть мысле по поводу реализации,

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

это кстати хорошо не только для защиты кода, но и для снижения необходимых объемов которые необходимо закачать каждому разрабу на свою машину, и попутно не придется поднимать весь сайт на локалке, чтоб иметь возможность провести достаточное тестирование модуля
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB