Eğer güzel dağınık php kod biçimlendirme için herhangi bir iyi araçları biliyor musunuz? Tercihen Aptana / Eclipse için bir senaryo, ama tek başına bir takım da yapacağız.
PHP Code Beautifier onların download page oluşturulacak bir hesap gerektirir rağmen, ne sonra konum yapmalıyım kullanışlı bir ücretsiz bir araçtır.
Aracı 3 sürümleri içine reddedildi:
- Görsel dosyasını işlemek için izin bir GUI sürümü.
- Diğer araçları (CVS, SubVersion, IDE ...) çoğullanamayan veya entegre izin Bir komut satırı sürümü.
- PHPEdit entegre bir aracı olarak.
Temelde, çevirmek gerekir:
if($code == BAD){$action = REWRITE;}else{$action = KEEP;}
for($i=0; $i<10;$i++){while($j>0){$j++;doCall($i+$j);if($k){$k/=10;}}}
içine
if ($code == BAD) {
$action = REWRITE;
} else {
$action = KEEP;
}
for($i = 0; $i < 10;$i++) {
while ($j > 0) {
$j++;
doCall($i + $j);
if ($k) {
$k /= 10;
}
}
}
Peki burada benim çok temel ve kaba script:
#!/usr/bin/php
<?php
class Token {
public $type;
public $contents;
public function __construct($rawToken) {
if (is_array($rawToken)) {
$this->type = $rawToken[0];
$this->contents = $rawToken[1];
} else {
$this->type = -1;
$this->contents = $rawToken;
}
}
}
$file = $argv[1];
$code = file_get_contents($file);
$rawTokens = token_get_all($code);
$tokens = array();
foreach ($rawTokens as $rawToken) {
$tokens[] = new Token($rawToken);
}
function skipWhitespace(&$tokens, &$i) {
global $lineNo;
$i++;
$token = $tokens[$i];
while ($token->type == T_WHITESPACE) {
$lineNo += substr($token->contents, "\n");
$i++;
$token = $tokens[$i];
}
}
function nextToken(&$j) {
global $tokens, $i;
$j = $i;
do {
$j++;
$token = $tokens[$j];
} while ($token->type == T_WHITESPACE);
return $token;
}
$OPERATORS = array('=', '.', '+', '-', '*', '/', '%', '||', '&&', '+=', '-=', '*=', '/=', '.=', '%=', '==', '!=', '<=', '>=', '<', '>', '===', '!==');
$IMPORT_STATEMENTS = array(T_REQUIRE, T_REQUIRE_ONCE, T_INCLUDE, T_INCLUDE_ONCE);
$CONTROL_STRUCTURES = array(T_IF, T_ELSEIF, T_FOREACH, T_FOR, T_WHILE, T_SWITCH, T_ELSE);
$WHITESPACE_BEFORE = array('?', '{', '=>');
$WHITESPACE_AFTER = array(',', '?', '=>');
foreach ($OPERATORS as $op) {
$WHITESPACE_BEFORE[] = $op;
$WHITESPACE_AFTER[] = $op;
}
$matchingTernary = false;
// First pass - filter out unwanted tokens
$filteredTokens = array();
for ($i = 0, $n = count($tokens); $i < $n; $i++) {
$token = $tokens[$i];
if ($token->contents == '?') {
$matchingTernary = true;
}
if (in_array($token->type, $IMPORT_STATEMENTS) && nextToken($j)->contents == '(') {
$filteredTokens[] = $token;
if ($tokens[$i + 1]->type != T_WHITESPACE) {
$filteredTokens[] = new Token(array(T_WHITESPACE, ' '));
}
$i = $j;
do {
$i++;
$token = $tokens[$i];
if ($token->contents != ')') {
$filteredTokens[] = $token;
}
} while ($token->contents != ')');
} elseif ($token->type == T_ELSE && nextToken($j)->type == T_IF) {
$i = $j;
$filteredTokens[] = new Token(array(T_ELSEIF, 'elseif'));
} elseif ($token->contents == ':') {
if ($matchingTernary) {
$matchingTernary = false;
} elseif ($tokens[$i - 1]->type == T_WHITESPACE) {
array_pop($filteredTokens); // Remove whitespace before
}
$filteredTokens[] = $token;
} else {
$filteredTokens[] = $token;
}
}
$tokens = $filteredTokens;
function isAssocArrayVariable($offset = 0) {
global $tokens, $i;
$j = $i + $offset;
return $tokens[$j]->type == T_VARIABLE &&
$tokens[$j + 1]->contents == '[' &&
$tokens[$j + 2]->type == T_STRING &&
preg_match('/[a-z_]+/', $tokens[$j + 2]->contents) &&
$tokens[$j + 3]->contents == ']';
}
// Second pass - add whitespace
$matchingTernary = false;
$doubleQuote = false;
for ($i = 0, $n = count($tokens); $i < $n; $i++) {
$token = $tokens[$i];
if ($token->contents == '?') {
$matchingTernary = true;
}
if ($token->contents == '"' && isAssocArrayVariable(1) && $tokens[$i + 5]->contents == '"') {
/*
* Handle case where the only thing quoted is the assoc array variable.
* Eg. "$value[key]"
*/
$quote = $tokens[$i++]->contents;
$var = $tokens[$i++]->contents;
$openSquareBracket = $tokens[$i++]->contents;
$str = $tokens[$i++]->contents;
$closeSquareBracket = $tokens[$i++]->contents;
$quote = $tokens[$i]->contents;
echo $var . "['" . $str . "']";
$doubleQuote = false;
continue;
}
if ($token->contents == '"') {
$doubleQuote = !$doubleQuote;
}
if ($doubleQuote && $token->contents == '"' && isAssocArrayVariable(1)) {
// don't echo "
} elseif ($doubleQuote && isAssocArrayVariable()) {
if ($tokens[$i - 1]->contents != '"') {
echo '" . ';
}
$var = $token->contents;
$openSquareBracket = $tokens[++$i]->contents;
$str = $tokens[++$i]->contents;
$closeSquareBracket = $tokens[++$i]->contents;
echo $var . "['" . $str . "']";
if ($tokens[$i + 1]->contents != '"') {
echo ' . "';
} else {
$i++; // process "
$doubleQuote = false;
}
} elseif ($token->type == T_STRING && $tokens[$i - 1]->contents == '[' && $tokens[$i + 1]->contents == ']') {
if (preg_match('/[a-z_]+/', $token->contents)) {
echo "'" . $token->contents . "'";
} else {
echo $token->contents;
}
} elseif ($token->type == T_ENCAPSED_AND_WHITESPACE || $token->type == T_STRING) {
echo $token->contents;
} elseif ($token->contents == '-' && in_array($tokens[$i + 1]->type, array(T_LNUMBER, T_DNUMBER))) {
echo '-';
} elseif (in_array($token->type, $CONTROL_STRUCTURES)) {
echo $token->contents;
if ($tokens[$i + 1]->type != T_WHITESPACE) {
echo ' ';
}
} elseif ($token->contents == '}' && in_array($tokens[$i + 1]->type, $CONTROL_STRUCTURES)) {
echo '} ';
} elseif ($token->contents == '=' && $tokens[$i + 1]->contents == '&') {
if ($tokens[$i - 1]->type != T_WHITESPACE) {
echo ' ';
}
$i++; // match &
echo '=&';
if ($tokens[$i + 1]->type != T_WHITESPACE) {
echo ' ';
}
} elseif ($token->contents == ':' && $matchingTernary) {
$matchingTernary = false;
if ($tokens[$i - 1]->type != T_WHITESPACE) {
echo ' ';
}
echo ':';
if ($tokens[$i + 1]->type != T_WHITESPACE) {
echo ' ';
}
} elseif (in_array($token->contents, $WHITESPACE_BEFORE) && $tokens[$i - 1]->type != T_WHITESPACE &&
in_array($token->contents, $WHITESPACE_AFTER) && $tokens[$i + 1]->type != T_WHITESPACE) {
echo ' ' . $token->contents . ' ';
} elseif (in_array($token->contents, $WHITESPACE_BEFORE) && $tokens[$i - 1]->type != T_WHITESPACE) {
echo ' ' . $token->contents;
} elseif (in_array($token->contents, $WHITESPACE_AFTER) && $tokens[$i + 1]->type != T_WHITESPACE) {
echo $token->contents . ' ';
} else {
echo $token->contents;
}
}
http://en.sourceforge.jp/projects/pdt-tools/
^ ^ ^ Size Java gibi uygun bir CTRL + SHIFT + F Eclipse / Aptana PHP formatlayıcıyı verecektir.
here kurulum yardım için bkz.
Kodunuzu biçimlendiren bir armut modül var. PHP Beautifier
Here's a php code beautifier (PHP of course) class:
http://www.codeassembly.com/A-php-code-beautifier-that-works/
ve
Online demo:
Zend Development Environment şimdi bir Eclipse eklentisi, sen Aptana yanında çalıştırmak mümkün olabilir ve sadece Girinti Kod özellik kullanabilirsiniz.
Ben Eclipse eklentisi yükseltilmiş değil henüz kendimi, çok önceki zde seviyorum. Şimdi diğer diller için Eclipse kullanarak aslında başladığımızı rağmen, ben sıçrama yapmak neredeyse hazırım.
Çıkış phpDesigner, oldukça iyi çalışan bir beautifier aracı var.
Buna ne dersin:
http://universalindent.sourceforge.net/
O orada formatters bir demet birleştirir ve böylece onları geçmek ve ekip üyeleri ... Ama ... biçemleyecileri pisliği kodunuzu olabilir dahaki sefere taahhütte bulunmadan önce bunları kullanmak için almak ve işlemek için ihtiyacınız komut üretecek kullanışsız ...
Basit çözüm hemen hemen PhpStorm için $ 60 damla, düzenli düzenli olarak PHP kod yazma için gidiyoruz, bu yerleşik olan bir IDE kullanmaktır. Sen pişman olmayacaksınız.
http://www.jetbrains.com/phpstorm/
Bu dosya ya da dizin düzeyinde basit bir klavye kısayolunu kullanarak Seviyorum ancak kodunuzu biçimlendirmek sağlayan ve trilyonlarca diğer büyük özelliklere sahiptir.
İşte bir nesne / Dizi beautifier bulunuyor. http://phillihp.com/toolz/php-array-beautifier/
Bizim PHP Formatter güvenilir kodunuzu biçimlendirmek olacaktır. Bu kodu ayrıştırmak için bir derleyici tabanlı ön kullanır, bu yüzden kodunu yanlış yorumluyor ve ona zarar vermez. Dolayısıyla onun biçimlendirilmiş çıktı always çalışır.
phpformatter.com iyi çalışır
"Eğer tarzı ile tüm PHP komut güzelleştirmek böylece Bu ücretsiz çevrimiçi PHP Formatter tercih tasarlanmıştır"
Bu mükemmel bir soru. Ben json ve çıkışlar php ve html ve css okur bir uygulama var. Ben bir programı çalıştırmak ve onlarca (yüzlerce?) Dosyaları oluşturur. Ben burada cevap yararlı olacağını umuyoruz.
Ben heredoc kullanarak benim projeyi başlatan özel vb dosyaları, meta karakter içerir ama bu hızla bir karışıklık oldu. Ben bir çerçeve ya da ide gerektirmeyen tek başına bir çözüm istedi. Yani tüm yorumlu metin ve diğer önemsiz kaldırıldı ve biçimlendirme için hiçbir endişe ile genel bir metin tamponlama sınıf oluşturduk. Tüm umrumda için bir satır olabilir. Html için, düzenli () built-in yapmak. Php için, ben kullanmak phpstylist. phpstylist eski ama hala php biçimi için iyi çalışır.
Ben windows gui UniversalIndent (updated Ocak 2012) kullanılan phpstylist seçeneklerini ayarlamak için.
UniversalStylist 24 listeleri (!) Biçimlendirici programlar (c, php, yakut, html, ...). Özellikle phpstylist için seçeneklerini bilir ve açık ve kapalı seçenekleri açmak gibi bir dosya size canlı bir yenileme verir. Çok büyük. Eğer tarzı var o zaman, bu komut satırı seçeneklerini kaydetmek için bir seçenek vardır ve bir komut dosyası oluşturur. Bazı biçimlendirme seçenekleri için vb Perl yolları, python, eklemeniz gerekir
Eğer windows kullanıyorsanız ve UniversalIndent ile phpstylist denemek istiyorsanız, sadece env yoluna php.exe için dizin eklemek. Ben kullanmak ampps benimki c ayarlanır: \ ampps \ php.
Bu iyi bir katı çözüm bulmak çok kolay değildi. Ben de diğer insanların kod inceleme ve arşivleme amacıyla otomatik oluşturulan php / html dosyaları mümkün toplu biçimlendirme gibi basit için ne işitme ilgileniyorum.