Библиотека классов на PHPClub

Angerslave

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

tashkentchi

Новичок
grigori, ну тогда совсем не интересно. С тем же успехом можно и на локалке в свой/чужой код пялиться. :)

-~{}~ 07.05.08 03:18:

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

Alexandre

PHPПенсионер
tashkentchi - все обсудили, осталось только создать библиотеку :)
есть опенсоурсные скрипты публикации кода или кто-то возмется их писать? (а потом выложит их и станет первым!!!)
 

kode

never knows best
нет, определённо прийдётся писать отдельно под PHPClub (интерграция с БД) и займёт максимум неделю
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
:) составление конкретного feature-list и обсуждение способов интеграции
Автор оригинала: kode
займёт максимум неделю
при активной заинтересованности team, которая щас готовит phpconf
 

phprus

Moderator
Команда форума
HraKK
А если серьезно как по мне код должен быть таким простым и понятным чтоб не нужны были коменты.
Комментарии должны объяснять не код, а алгоритмы реализованные в этом коде. Повторяй эту фразу до тех пор пока на тебя не снизойдет просветление.
Или ты глядя на реализацию того-же алгоритма быстрой сортировки сможешь мгновенно сформулировать принцип его работы?
 

HraKK

Мудак
Команда форума
phprus
Это описание класса, что он делает и как. А далеко не коментарии кода.
Буда, блин.

А коментарии кода должны описывать только АПИ методов. PHPDoc.
 

AmdY

Пью пиво
Команда форума
ждёмс комментарии его святейшества, а то админ пока не откоментировал, а идея никуда не денется.
 

phprus

Moderator
Команда форума
HraKK
Это описание класса, что он делает и как. А далеко не коментарии кода.
То, что я описал - это как раз и есть комментарии к коду, а не описание классов/функций.
ИМХО Описание класса должно отвечать на вопрос:"Что делает класс?" (инкапсуляция однако. пользователю не обязательно знать как реализуется класс), а комментарии к коду - на вопрос "Как код это делает?"
В примере с сортировкой ответом на первый вопрос (описание) будет - сортирует набор данных. Ответом-же на второй вопрос будет описание алгоритма по которому происходит сортировка.
 

HraKK

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

Я если качаю и использую чужие решения так я не хочу разбератся что где и как - а просто plug and play.
 

kode

never knows best
важно сделать возможность указывания зависимостей (и при скачивании сразу чтобы отдавало автономный код)
 

phprus

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

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

HraKK

Мудак
Команда форума
и для упрощения процесса поиска той-же ошибки лишними не будут комментарии к реализации отвечающие на вопрос как класс это делает.
Полностью согласен. Но, я уже вижу коменты в стиле: "//check if exist method". Вот такое будет повсеместно встречатся. И это больше запутывает меня чем мифический алгоритм который я не смогу понять сходу.
Я предлогаю ввести 2 вида комментариев - API + в самом начале описание класса с ответами на то что он делает и как он делает в общих чертах.
 

kode

never knows best
Автор оригинала: HraKK
Полностью согласен. Но, я уже вижу коменты в стиле: "//check if exist method". Вот такое будет повсеместно встречатся. И это больше запутывает меня чем мифический алгоритм который я не смогу понять сходу.
Я предлогаю ввести 2 вида комментариев - API + в самом начале описание класса с ответами на то что он делает и как он делает в общих чертах.
Думаю комментарии на русском (это конечно плохо) запрещать нельзя.....
 

HraKK

Мудак
Команда форума
нужно:)
Я просматриваю в UTF-8. Кто-то в cp1251 и получим кашу.

Но вообще-то мы о другом спорим, а не о языке коментариев.
 

kode

never knows best
> Я просматриваю в UTF-8. Кто-то в cp1251 и получим кашу.

лол, это САМАЯ большая проблема :D Это вобще даже не проблема, если вы конечно о Content-Type: text/html; charset=[utf-8|windows-1251] не знали

-~{}~ 08.05.08 14:26:

просто я знаю вас, модераторов, субьективно не понравится - в топку (стиль использования фигурных скобок, кавычки, etc)

-~{}~ 08.05.08 15:00:

хех, интересно: вот такой класс пройдёт (хех, на коленке для примера)

PHP:
<?php

/**
 * Abstract container
 *
 */
abstract class Container {
	/**
	 * Contained binary data
	 *
	 * @var mixed
	 */
	protected $container;
} //end of class Container

/**
 * Object Oriented Represintation of Multibyte string
 *
 */
class MBString extends Container {
	/**
	 * Binary container for our string
	 *
	 * @var string
	 */
	protected $encoding = "UTF-8";
	
	/**
	 * Constructor. First argument - binary string
	 *
	 * @param string $string
	 * @param string $encoding
	 */
	public function __construct($string,$encoding="UTF-8"){
		settype($string,"string");
		
		if($encoding != $this->encoding){
			$this->encoding = $encoding;
		}
		
		$this->container = $string;
	} //end of constructor
	
	/**
	 * Return length of string
	 *
	 * @return int
	 */
	public function length(){
		return mb_strlen($this->container,$this->encoding);
	} //end of method length
	
	/**
	 * Return part of contained string
	 *
	 * @param int $start
	 * @param int $length
	 * @return MBString
	 */
	public function cut($start,$length=null){
		return new MBString(($length)?mb_substr($this->container,$start,$length,$this->encoding):
		           mb_substr($this->container,$start,$this->length(),$this->encoding),$this->encoding);
	} //end of method substr
	
	/**
	 * Return position of 'needle' character
	 *
	 * @param string $haystack
	 * @param string $needle
	 * @param int $offset
	 * @return MBString
	 */
	public function pos($needle, $offset=0){
		return new MBString(mb_strpos($this->container,$needle,$offset,$this->encoding),$this->encoding);
	} //end of method strpos
	
	/**
	 * Returns used character encoding
	 *
	 * @return MBString
	 */
	public function getEncoding(){
		return new MBString($this->encoding,$this->encoding);
	} //end of method getEncoding
	
	/**
	 * Magic method, return native binary string
	 *
	 * @return string
	 */
	public function __toString(){
		return $this->container;
	} //end of method __toString
	
	//...etc
} //end of class MBString

?>
 

HraKK

Мудак
Команда форума
kode
Спасибо поржал. Я конечно не о Content-Type. *надо же додуматься*
А о Encoding в IDE
 

kode

never knows best
Товарисч, а вы знаете что нормальные браузеры автоматически переводят всё в системную локаль....а про Content-Type я пошутил (жаль что вы контекста не поняли) :)

Вариант для альтернативно одарённых: если я загружу страницу в utf-8, скопирую от туда текст в IDE где используется win-1251 (и наоборот) - я не получу крягозяблов.


Кодировка хранения однозначно юникод, для тех кому хочется сразу качать (а не копипастить), пусть при открытии кодировку указывают
 
Сверху