1. PHP / Говнокод #11683

    +57

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    function GetOrderSkidka(&$arrData)
        	{
    	    	if($this->flag_opt){
    	    	 	$arrData['skidka']  = ($this->admin_mode) ? $arrData['skidka'] : 0;
    	    	 	$arrData['allsum']  = $arrData['sum'] - $arrData['skidka'];
    	    	 	return;
    	        }
    	    	if(!$this->flag_in_action){
    	    		$arrData['cnt_s_prod'] = $arrData['cnt'];
    	    	}elseif(in_array($this->flag_action_type,array(2,3))){
    	    		$this->calcCntProd($arrData);
    	    	}else{
    	    		$arrData['cnt_s_prod'] = 0;
    	    	}
    	    	$this->discount->GetOrderSkidka($arrData);
        	}

    Работаю с сайтом, в котором все методы классов работают со своими параметрами таким образом.
    Метод может ничего не возвращать, а вызывать другие методы (которые также могут вызывать какие-то методы),
    которые в зависимости от множества условий меняют переданные по ссылке параметры.
    Итог работы модифицированный параметр- массив. Только XDebug выручает.

    minramilka, 31 Августа 2012

    Комментарии (65)
  2. PHP / Говнокод #11681

    +54

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    <?php
    
    class SimpleController extends Zend_Controller_Action
    {
        public function init()
        {
            $action = $this->_request->getActionName();
            $is_action_available = in_array($action, explode(',', 'terms,privacy,about,copyright,support,legal,features,help,refund'));
            $is_incorrect_action = CR_Settings::siteIsFree() && $action == 'refund';
            if (!$is_action_available || $is_incorrect_action)
                $this->_helper->redirector->setGotoRoute(array('action' => 'index'), 'default', true);
        }
        
        public function termsAction(){
        }
        
        public function privacyAction(){
        }
        
        public function aboutAction(){
        }
        
        public function copyrightAction(){
        }
        
        public function supportAction(){
        }
        
        public function legalAction(){
        }
        
        public function featuresAction(){
        }
        
        public function helpAction(){
        }
        
        public function refundAction(){
        }
    }

    Zend Framework проверка на существование action :)

    arkasha, 31 Августа 2012

    Комментарии (4)
  3. PHP / Говнокод #11677

    +57

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    function SetImage($row=array())
    	{
         foreach($row as $property=>$value)
         	{
         	eval("\$this->".$property." = '".$value."';");
         	}
    	}

    minramilka, 30 Августа 2012

    Комментарии (9)
  4. PHP / Говнокод #11673

    +49

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    /**
      * Test for method importData()
      */
    public function testImportData()
    {
         $this->_model->expects($this->once())
             ->method('_importData');
         $this->_model->importData();
     }

    Ценное юнит-тестирование правильности работы метода

    InnerJoin, 30 Августа 2012

    Комментарии (0)
  5. PHP / Говнокод #11669

    +53

    1. 1
    2. 2
    3. 3
    $post_slug = explode("/", trim($_SERVER["REQUEST_URI"], " /"));
    $the_query = new WP_Query(array("name" => $post_slug[1],
                                    "post_type" => "conference"));

    И снова WordPress!'

    URL вида http://somesite.ru/conference/pervaya-konferentsiya-anesteziologov/program/

    varg242, 29 Августа 2012

    Комментарии (5)
  6. PHP / Говнокод #11668

    +51

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    <? 
    return true;
    				@ $db=mysql_connect('akapyan.localhost','akapyan','akapyan123');
    				if ( !$db)
    				 {
    echo "<h2 align=center>Приносим извенения !<br>Произошел сбой соединения,попробуйте зайти на сайт позднее...</h2>
    ";
    exit;
    				}
    				
    	$quer1="select * from obekt  ORDER BY `mm` DESC LIMIT 20  ";   
    												
    												mysql_select_db("db_akapyan");

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

    oooZinka, 29 Августа 2012

    Комментарии (15)
  7. PHP / Говнокод #11665

    +45

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    if($data['status'] == 1 ) {
             $data['status_a'] = 'selected="selected"';
             $data['status_d'] = false;
        } else {
              $data['status_a'] = false;
              $data['status_d'] = 'selected="selected"';
         }
     
    echo '<select id="status">
           <option value="1" '.$data['status_a'].'>Активный</option>
            <option value="0" '.$data['status_d'].'>Не активный</option>
    </select>';

    Мой говнокод, виноват! Но все же интересно было бы, как с таким справляются ?

    nepster, 29 Августа 2012

    Комментарии (14)
  8. PHP / Говнокод #11664

    +64

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    case 5: {
    			$im = imagecreatetruecolor(1024, 1024);
    			imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/0.jpg"), 0, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/1.jpg"), 0, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/2.jpg"), 0, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/3.jpg"), 0, 765, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/4.jpg"), 255, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/5.jpg"), 255, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/6.jpg"), 255, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/7.jpg"), 255, 765, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/8.jpg"), 510, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/9.jpg"), 510, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/10.jpg"), 510, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/11.jpg"), 510, 765, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/12.jpg"), 735, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/13.jpg"), 735, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/14.jpg"), 765, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im, imagecreatefromjpeg("core/temp/15.jpg"), 765, 765, 0, 0, 255, 255, 100);
    			imagepng($im, "core/".$name_tovar."/1.png");
    			$im2 = imagecreatetruecolor(1024, 1024);
    			imagefill($im2, 0, 0, imagecolorallocate($im2, 255, 255, 255));
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/16.jpg"), 0, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/17.jpg"), 0, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/18.jpg"), 0, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/19.jpg"), 0, 765, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/20.jpg"), 255, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/21.jpg"), 255, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/22.jpg"), 255, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/23.jpg"), 255, 765, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/24.jpg"), 510, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/25.jpg"), 510, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/26.jpg"), 510, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/27.jpg"), 510, 765, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/28.jpg"), 735, 0, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/29.jpg"), 735, 255, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/30.jpg"), 765, 510, 0, 0, 255, 255, 100);
    			imagecopymerge($im2, imagecreatefromjpeg("core/temp/31.jpg"), 765, 765, 0, 0, 255, 255, 100);
    			imagepng($im2, "core/".$name_tovar."/2.png");
    			// еще строк 60
    			imagepng($im5, "core/".$name_tovar."/5.png");
    		}

    ..и так далее.
    Прислал знакомый с комментарием:

    [18:18:48] брал 16 картинок
    [18:18:52] нужно было склеить в одну
    [18:19:04] ну и эти 16 картинок спарсить и т.д. и т.п.

    Это, как бы, только один кейс. Там таких 6, в 6 вообще чертовщина ужасная строк на 200.
    Всё это чудо занимает 858 строк несвежего кала весом в ~80кб.

    AlexT, 28 Августа 2012

    Комментарии (7)
  9. PHP / Говнокод #11662

    +57

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    <?php
    //...
    foreach ($month as $key=>$value)
    	{
    		if($value!=0)
    		{
    			$leased[$year[$key]] = $pay_leased->get_leased_pay($year[$key],$value);
    			$dialup[$year[$key]] = $pay_dialup->get_billing_pay($year[$key],$value);
    			$domain[$year[$key]] = $pay_domain->get_domain_pay($year[$key],$value);
    			$web[$year[$key]] = $pay_web->get_hosting_pay($year[$key],$value);
    
    			for ($d=1;$d<=31;$d++) // во всех месяцах по 31 дню, да
    			{
    				$leased[$year[$key]][$value][$d] = isset($leased[$year[$key]][$value][$d]) ? $leased[$year[$key]][$value][$d] : 0;
    				$dialup[$year[$key]][$value][$d] = isset($dialup[$year[$key]][$value][$d]) ? $dialup[$year[$key]][$value][$d] : 0;
    				$domain[$year[$key]][$value][$d] = isset($domain[$year[$key]][$value][$d]) ? $domain[$year[$key]][$value][$d] : 0;
    				$web[$year[$key]][$value][$d] = isset($web[$year[$key]][$value][$d]) ? $web[$year[$key]][$value][$d] : 0;
    			}
    			ksort($leased[$year[$key]][$value]);
    			ksort($dialup[$year[$key]][$value]);
    			ksort($domain[$year[$key]][$value]);
    			ksort($web[$year[$key]][$value]);
    
    			for ($c=1;$c<=31;$c++) // и еще
    			{
    				$leased[$year[$key]][$value][$c] = $leased[$year[$key]][$value][$c-1]+$leased[$year[$key]][$value][$c];
    				$dialup[$year[$key]][$value][$c] = $dialup[$year[$key]][$value][$c-1]+$dialup[$year[$key]][$value][$c];
    				$domain[$year[$key]][$value][$c] = $domain[$year[$key]][$value][$c-1]+$domain[$year[$key]][$value][$c];
    				$web[$year[$key]][$value][$c] = $web[$year[$key]][$value][$c-1]+$web[$year[$key]][$value][$c];
    				$sum[$year[$key]][$value][$c] = $leased[$year[$key]][$value][$c]+$dialup[$year[$key]][$value][$c]+$domain[$year[$key]][$value][$c]+$web[$year[$key]][$value][$c]; // вау, какая большая строка
    			}
    		}
    	}
    //...

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

    rsvasilyev, 28 Августа 2012

    Комментарии (1)
  10. PHP / Говнокод #11660

    +62

    1. 1
    if(!preg_match("/^[0-9]{10,10}+$/", $_POST['userPhone'])) echo ("Телефон задан в неверном формате");

    В тему о регулярках.
    http://www.smsfeedback.ru/smsapi/proverka_telefona_na_php.php

    1_and_0, 28 Августа 2012

    Комментарии (5)