Nasıl dizilerde uzun dizeleri biçimlendirmek için

6 Cevap php

How should I format very long strings in my source code?
I follow the rule, that line of code should not be longer than 80 characters.
(The other rules are Zend Framework formatting standard)

örneğin

protected $_messages = array(
    'key1' => 'very, very long string lorem ipsum dolor sit amet…',
    'key2' => 'this one it very long too, and exceeds 80 characters len…'
);

6 Cevap

Eğer (Adam / Peter başına) DB / dosyasında değerleri saklamak değil, ve kesinlikle, o zaman bu durumda bile onlara uygun olabilir, Zend Framework kurallarına göre 80/120 karakter sınırını tutmak gerekir.

As per: http://framework.zend.com/manual/en/coding-standard.coding-style.html

String Concatenation (bir düzey ekstra girinti)

$sql = "SELECT `id`, `name` FROM `people` "
    . "WHERE `name` = 'Susan' "
    . "ORDER BY `name` ASC ";

Associative Arrays (bir düzey ekstra girinti)

$sampleArray = array(
    'firstKey'  => 'firstValue',
    'secondKey' => 'secondValue',
);

The above two combined (iki seviyeli uzun dizeleri için ekstra girinti)

protected $_messages = array(
    'key1' => 'very, very long string '
        . 'lorem ipsum dolor sit amet…',
    'key2' => 'this one it very long too, '
        . 'and exceeds 80 characters len…'
);

Edit:
The above does not work (thanks & sorry takeshin), as PHP does not seem to allow any code/operators in initial values of class properties.

Çözelti sınıf kurucusu içinde ilk değerlerini birleştirmek ve ayarlamak için:

<?php

class bar {
    protected $_messages = Array();

    public function __construct() {

        // manually initialize, or load from DB/XML/etc
        $this->_messages[] = "very, very long string "
            . "lorem ipsum dolor sit amet";

        $this->_messages[] = "this one it very long too, "
            . "and exceeds 80 characters len";

        var_dump( $this->_messages );
    }
}

$foo = new bar();

?>

Şahsen ben vesilesiyle uzun hatları gibi - Eğer editörü sarma kapatmak eğer işler daha okunabilir yapabilirsiniz. "String" in sonları. "String". "String"; biçimi imo sadece dağınık.

Kurallar aslında, kırık olması için vardır. Sizin için en okunabilir olursa olsun kullanmak yerine okunabilir başkasının fikrine uygun.

Sadece kod okunabilmesi için belli bir uzunlukta için değişkenleri sınırlamak için mantıklı değil. Seçenekleri nelerdir? Çeşitli değişkenler bölmek ve birleştirmek? Amaçsız ekstra iş (sizin ve php için)

Ne adam dedi. Eğer gerçekten kod uzun satırları istemiyorsanız, her zaman düz bir dosya veya db olarak dizeleri ve init zaman onları okuyabilirsiniz.

dize reeeeeeealy uzun ise, her zaman kullanabilirsiniz $var = include('file.php'); ve bu dosyanın içindeki <?php return "loooooong string";

Neyse ben kural INTERACTIVE hatları için bir anlamı olduğunu düşünüyorum. Uzun böyle böyle asla gerektiği anlamına gelir:

// dont use
$_string = "this is a long " . $string . " which is generated by program code along with some parameters like: " . $parameter1 . " or " . $parameter2;
// dont use
$_string = "The apples are "($paramBool ? "" : $not) . " there. The amount of apples is " . ($paramInt > 3 ? $bigger : $smaller) . "than 3";
// you can use IMHO
$_string = "this is a long string which is generated by program code along with some parameters like: width or height";

Kolayca değişkenleri göz ardı edebilirsiniz ya da parantez içinde kaybolmak, çünkü birinci ve ikinci kullanılmamalıdır. Öte yandan üçüncü içinde hiçbir değişkenleri, işlevleri veya diğer herhangi bir mantığı vardır, bu yüzden hiç o içine yazmak gerekir şansı var. Ve bunun için size IDE hat şal kullanabilirsiniz ... sürece diğer "dinamik ve interaktif" hat 80 altında tutulur gibi.

Ama bu sadece benim kişisel tercih ve "de jure" cevabı MICE adlı yazı içinde olmasıdır.

Satır sonları izin verilirse kullanabilirsiniz Nowdoc olabilir

public $arr = array(
  <<<TEXT
Some very
long text
TEXT
,
'key2' => <<<TEXT
Some more very
long text
TEXT
);

Ama kötü görünüyor!