Сборник индуского кода.

Redjik

Джедай-мастер
Не в форме, это в модели.

По идее надо это в вид кидать, но мне показалось забавным вынести это в behavior, в последствии, этот функционал подключается 2мя строчками, а в разных видах не дублируется код.
 

Ragazzo

TDD interested
Иван Redjik Матвеев
понятно, я просто подумал что это CFormModel поэтому и сказал что форма))
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Не индусский, просто веселый кусочек попался:

PHP:
<?php defined('SYSPATH') or die('No direct script access.');
/**
 * Words aren't enough sometimes, you need some sarcasm to do the trick
 *
 * @since 1.0
 * @package Commoneer
 * @subpackage Exception
 */
class Exception_Sarcasm extends Commoneer_Exception
{

    /**
     * @var int Sarcasm error code
     */
    protected $_code = 666;

    /**
     * Construct a new Exception_Sarcasm
     *
     * @param string $message
     * @param array $variables
     * @param int $code
     */
    public function __construct($message = 'Oh? Did you honestly just try to do that?', array $variables = array(), $code = 666)
    {
        parent::__construct($message, $variables, $code);
    }

}
 

AmdY

Пью пиво
Команда форума
оставлю пару строк, коих под полтора тысячи в одном классе Groovy.
PHP:
public class ArrayUtil {
   private static final Object[] EMPTY = new Object[0]
           ;
 
   public static Object[] createArray() {
       return EMPTY;
   }
 
   public static Object[] createArray(Object arg0) {
       return new Object[]{
               arg0};
   }
 
   public static Object[] createArray(Object arg0, Object arg1) {
       return new Object[]{
               arg0, arg1};
   }
 
   public static Object[] createArray(Object arg0, Object arg1, Object arg2) {
       return new Object[]{
               arg0, arg1, arg2};
   }
 
   public static Object[] createArray(Object arg0, Object arg1, Object arg2, Object arg3) {
       return new Object[]{
               arg0, arg1, arg2, arg3};
   }
http://svn.groovy.codehaus.org/browse/groovy/trunk/groovy/groovy-core/src/main/org/codehaus/groovy/runtime/ArrayUtil.java?r=21152
 

fixxxer

К.О.
Партнер клуба
Вообще, там коммент сверху поясняет, что это внутренняя оптимизация, и почему так лучше.
 

Absinthe

жожо
Вывод <!-- в начале кода.
Чтобы ошибки были невидимыми.

Или вот это:
PHP:
<?php for($i=0; $row = $v['countries'][$i]; $i++): ?>
 

fixxxer

К.О.
Партнер клуба
Таких товарищей надо привязывать к батарее, пока не вычистят все notice-ы. :)
 

Absinthe

жожо
Вообще, там коммент сверху поясняет, что это внутренняя оптимизация, и почему так лучше.
ИМХО таких вещей не должно быть в исходном коде, они должны создаваться генератором во время сборки.
Поэтому я согласен с AmdY по поводу говнокодости.
 

fixxxer

К.О.
Партнер клуба
Дык это и есть сгенерированный код.
Исходник нужен не только во время сборки, чтобы работал отладчик, например.
 

Pez!

Я твой сайт похапе писал
PHP:
//--Создание билиберды
    public static function blabla($length=0,$start=0) {
        mt_srand(time()+(double)microtime()*1000000);
        $blabla=sha1(mt_rand(1000,9999)+lcg_value());
        if ($length!=0) $blabla=substr($blabla,$start,$length);
        return $blabla;
    }
 

fixxxer

К.О.
Партнер клуба
PHP:
   public function changeToSubclass($subclass) {
       // ugly hack. Nope... two ugly hacks
       class_exists($subclass);        
       if (get_class($this) == $subclass) {
           return $this;      
       }
       ${'th'.'is'} = unserialize(     
           preg_replace(      
               '/^O:[0-9]+:"[^"]+":/',         
               'O:' . strlen($subclass) . ':"' . $subclass . '":',
               serialize($this)                
           )                  
       );                     
       return $this;          
   }
какой такой runkit?... =)
 

fixxxer

К.О.
Партнер клуба
Так вроде в данном случае одно следствие другого и наоборот. Это вообще был хак "чтобы заработало", я потом разгреб и выбросил. Но мне показалось, что тут такому коду самое место =)
 

AmdY

Пью пиво
Команда форума
Гениальное решение для gettext от Zend Framework https://github.com/zendframework/zf2/blob/master/library/Zend/I18n/Translator/Loader/Gettext.php#L62
PHP:
public function load($locale, $filename)
    {
        if (!is_file($filename) || !is_readable($filename)) {
            throw new Exception\InvalidArgumentException(sprintf(
                'Could not open file %s for reading',
                $filename
            ));
        }

        $textDomain = new TextDomain();

        ErrorHandler::start();
        $this->file = fopen($filename, 'rb');
        $error = ErrorHandler::stop();
        if (false === $this->file) {
            throw new Exception\InvalidArgumentException(sprintf(
                'Could not open file %s for reading',
                $filename
            ), 0, $error);
        }

        // Verify magic number
        $magic = fread($this->file, 4);

        if ($magic == "\x95\x04\x12\xde") {
            $this->littleEndian = false;
        } elseif ($magic == "\xde\x12\x04\x95") {
            $this->littleEndian = true;
        } else {
            fclose($this->file);
            throw new Exception\InvalidArgumentException(sprintf(
                '%s is not a valid gettext file',
                $filename
            ));
        }

        // Verify major revision (only 0 and 1 supported)
        $majorRevision = ($this->readInteger() >> 16);

        if ($majorRevision !== 0 && $majorRevision !== 1) {
            fclose($this->file);
            throw new Exception\InvalidArgumentException(sprintf(
                '%s has an unknown major revision',
                $filename
            ));
        }

        // Gather main information
        $numStrings                   = $this->readInteger();
        $originalStringTableOffset    = $this->readInteger();
        $translationStringTableOffset = $this->readInteger();

        // Usually there follow size and offset of the hash table, but we have
        // no need for it, so we skip them.
        fseek($this->file, $originalStringTableOffset);
        $originalStringTable = $this->readIntegerList(2 * $numStrings);

        fseek($this->file, $translationStringTableOffset);
        $translationStringTable = $this->readIntegerList(2 * $numStrings);

        // Read in all translations
        for ($current = 0; $current < $numStrings; $current++) {
            $sizeKey                 = $current * 2 + 1;
            $offsetKey               = $current * 2 + 2;
            $originalStringSize      = $originalStringTable[$sizeKey];
            $originalStringOffset    = $originalStringTable[$offsetKey];
            $translationStringSize   = $translationStringTable[$sizeKey];
            $translationStringOffset = $translationStringTable[$offsetKey];

            $originalString = array('');
            if ($originalStringSize > 0) {
                fseek($this->file, $originalStringOffset);
                $originalString = explode("\0", fread($this->file, $originalStringSize));
            }

            if ($translationStringSize > 0) {
                fseek($this->file, $translationStringOffset);
                $translationString = explode("\0", fread($this->file, $translationStringSize));

                if (count($originalString) > 1 && count($translationString) > 1) {
                    $textDomain[$originalString[0]] = $translationString;

                    array_shift($originalString);

                    foreach ($originalString as $string) {
                        $textDomain[$string] = '';
                    }
                } else {
                    $textDomain[$originalString[0]] = $translationString[0];
                }
            }
        }

        // Read header entries
        if (array_key_exists('', $textDomain)) {
            $rawHeaders = explode("\n", trim($textDomain['']));

            foreach ($rawHeaders as $rawHeader) {
                list($header, $content) = explode(':', $rawHeader, 2);

                if (trim(strtolower($header)) === 'plural-forms') {
                    $textDomain->setPluralRule(PluralRule::fromString($content));
                }
            }

            unset($textDomain['']);
        }

        fclose($this->file);

        return $textDomain;
    }
 

craz

Нестандартное звание
оно все гениальное?) можешь хотя бы откомментить, что не так, в познавательных целях?
 
Сверху