2014-01-12 58 views
1

我很好奇使用動態CSS屬性的正確方法。我有變量,如果包含顯示在動態CSS樣式表。顯示php css屬性的最有效方法

如果我有動態CSS爲使

body { 
    background:<?php global $data; echo $data['body_background'];?>; 
    background-image:url(<?php global $data; echo $data['body_background_background']; ?>); 
} 

我是最好的使用if statements之前或讓它回聲出一個空白的CSS語句,如果它是空的? 例如,如果沒有價值,將顯示

body { 
    background:; 
    background-image:url(); 
} 

我是最好的,包括它的if statements所以它不顯示任何內容?例如:

if (!empty($data['body_background'])) { 
background:<?php global $data; echo $data['body_background'];?>; 
} 

什麼是最有效的方法呢?

+0

單獨的文件,但在風格的標籤。覆蓋原始的CSS。 – user2966586

+1

效率在這裏不是問題。無論哪種方式,你都在談論微秒。儘管如此,它絕對是好的(也可能也是必需的?不確定我的頭頂)是不是顯示空的屬性。 –

+1

爲了生成動態CSS,您可能需要查看[LESS](https://en.wikipedia.org/wiki/LESS_(stylesheet_language))或[Sass](https://en.wikipedia.org/wiki/ Sass_(stylesheet_language)),除非您打算在每個請求上重新生成CSS。 – user555

回答

0

您可以使用ternary operator簡化if陳述。

body{ 
<?php echo (empty($data['body_background']))?'':'background:'.$data['body_background'].';'; ?> 
} 
0

我要給你一個建議:實現某種樣式發生器,編譯變量進入,然後可以包含一個唯一的CSS文件。我無法真正想象出樣式變量會改變每個請求的實際情況。

關於代碼風格:global是PHP的遺留4次,不應再使用。

至於你的具體問題: 使用if語句來檢查特定的數組值是否填充在第一位。你可以通過以下方式來完成。

body{ 
    <?php echo (empty($data['body_background']) ? '' : 'background:' . $data['body_background'] . ';'); ?> 
} 
+0

'global'用於在函數外包含變量。它在if語句中沒有用處,除非它們也在函數內部。反對使用'global'的原因是它非常緊密地耦合了代碼,而不是因爲一些人認爲它過時了。 – user555

+0

我知道全球性是什麼,同時也是過時的,因爲利用PHP 5的對象模型,這種編碼方式已不再必要。使用PHP5,可以在方法中使用對象變量或類變量(加上超級全局變量,但它們是另一個故事),但沒有其他類型的變量。一個類之外的函數應該獨立於它的位置,因此全局在很多方面都是不好的做法。 –

2

這是所有Macaroni code。我的建議是:

  • 如果可能的話,考慮使用一些模板引擎(Smarty,Twig,鬍鬚,把手等),然後在閱讀時看起來會更加清晰。
  • 避免使用全局變量。
  • 如果你仍然想/需要使用php,那麼使用三元運算符,因爲它在其他答案中建議。
  • 如果你的代碼是在PHP> = 5.4或short_open_tag的值爲運行應該被啓用,那麼你可以通過<?=
  • 更換<?php echo讓使用它們,以避免空值之前的代碼明確設置的所有屬性。