- Установка класса CSS-элемента в PHP
- 3 ответа
- CSS классы в классе Tag
- Добавление класса
- Удаление класса
- jonathantneal / README.md
- How to Use CSS in PHP Echo to Add Style (3 Easy Ways)
- How to Use CSS in PHP Echo with Style Attribute
- Add CSS in a Class and Include the Class in PHP Echo
- Use Double Quotes and Escape Using Backslash
- FAQS on How to Use CSS in PHP Echo to Add Style
- Q1. Can You Style PHP?
- Q2. How Do I Style an Echo Statement in PHP?
- Q3. How to Style PHP Echo Output?
- Q4. How to Add CSS in PHP?
Установка класса CSS-элемента в PHP
Я пытаюсь изменить немного PHP-кода, чтобы заставить его присваивать уникальный класс CSS элементам, которые он создает, когда он циклически перебирает свой цикл. Теоретически, я просто пытаюсь взять «имя», которое эхом отозвалось на экране, и назначить его как класс для элемента, который был создан следующим. Здесь цифрологический цикл кода:
Simplistcally, я пытаюсь получить строку, которая повторяет имя $exam->name которое будет назначено классу этого элемента
Хотя я уверен, что я неправильно обрабатываю кавычки или синтаксис (по крайней мере, в любом случае, это не значит, что класс присваивается классу
@Machavity Зачем тебе это? Его вопрос только о синтаксисе PHP для добавления класса к выводу, он уже знает, как получить доступ к содержимому массива.
3 ответа
Это поможет, если вы так сильно перестанете ходить и выходить из PHP, это, вероятно, будет легче читать следующим образом:
Если вы хотите делать двойные кавычки, вам нужно избегать их, когда вы хотите их эхом, но затем вы можете использовать переменную без конкатенации ряда строк. (Когда вы используете объекты/массивы, это помогает окружать каждую переменную с помощью <> )
«Это поможет, если вы перестанете так часто входить и выходить из PHP». Бинго! Эта нелепая одержимость шаблонными системами PHP / HTML вызывает больше головных болей, чем решений.
Просто утверждение «если» неверно, оно должно быть без «!» сохранить логику. Оставаться в разделе PHP это хорошая идея.
Другие ответили так же, как и я, но я хочу добавить это, чтобы объяснить проблему. И почему это не «глупый» вопрос, а скорее причудливый побочный продукт того, как некоторые системы CMS смешивают HTML и PHP в своих шаблонах. Короче: они отформатируют шаблон как хороший HTML, чтобы он казался чистым и легким для не-кодеров, но при этом их смешение inline-PHP делает PHP-кодирование более сложным, чем оно есть. Значение этого кода:
Что теперь легче анализировать с точки зрения программирования, поэтому теперь вы можете сделать это:
То, что я там делал, это использовать sprintf для размещения ‘ ‘ В ». %s означает, что это строка, которая должна быть помещена туда, а строка — это то, что приходит после запятой в инструкции sprintf . Я нахожу это намного проще для кода, тестирования и отладки. Но в целом, ключ к упрощению PHP-кодирования — это просто использовать прямой PHP, когда любая логика должна быть помещена в контексте HTML.
Добавление sprintf и бессмысленного условия if () / continue делает этот путь более сложным, чем нужно.
@ Джессика Я предпочитаю использовать sprintf так что это не бессмысленно. Это просто личный стиль. Но ваша критика сложности верна. Меня смутила первоначальная цель / логика вопроса автора. Пойми это лучше сейчас. Упростил мой пример.
CSS классы в классе Tag
Как вы видите, атрибут class содержит в себе несколько значений, разделенных пробелами. Эти значения представляют собой несколько CSS классов нашего элемента.
Давайте реализуем в нашем классе Tag набор методов, которые будут работать с этими CSS классами. Например, было бы удобно иметь метод addClass , добавляющий еще один класс в строку с классами.
При этом наш метод должен проверять то, что добавляемый класс еще не присутствует среди классов элемента, иначе добавление нового класса будет приводить к тому, что у элемента будет несколько одинаковых классов, что, конечно же, неправильно.
Пример использования желаемого нами метода:
Было бы также удобно иметь метод removeClass для удаления заданного класса элемента.
Практическое применение этих методов вы еще увидите в следующих уроках.
Давайте реализуем описанные методы.
Добавление класса
Как вы знаете, наш класс Tag хранит атрибуты тега в свойстве $this->attrs . Данное свойство представляет собой массив. В этом массиве может быть элемент с ключом class , содержащий CSS классы элемента. Элемента с таким ключом может, однако, и не быть.
Все зависит от того, был ли при создании тега вызван метод setAttr для установки атрибута class или нет.
Вот пример того, когда он был вызван:
А вот пример того, когда он не был вызван:
В реализации нашего метода addClass нужно будет учесть оба варианта.
Получается, что если у элемента не заданы CSS классы, то вызов метода addClass должен просто создавать в массиве $this->attrs новый элемент с ключом class и записывать в него переданный класс:
attrs: if (!isset($this->attrs[‘class’])) < $this->attrs[‘class’] = $className; // запишем наш CSS класс > return $this; // возвращаем $this для работы цепочки > ?>?php>
Обратите внимание на то, что параметр метода называется $className , а не $class , так как слово class является зарезервированным в PHP и его нельзя использовать в качестве имени переменной.
Давайте теперь рассмотрим второй вариант, когда в $this->attrs[‘class’] уже есть один или несколько классов. Как уже упоминалось выше, эти классы были добавлены ранее с помощью метода setAttr . Эти классы также могли быть добавлены с помощью вызова метода (или цепочки методов) addClass .
Способ добавления, в общем-то, не имеет никакого значения, главное, что, если классы есть, то они хранятся в виде строки, разделенные пробелами. Либо, если там один класс, то в $this->attrs[‘class’] просто хранится его имя, без пробелов.
Пусть в $this->attrs[‘class’] хранится несколько классов. В этом случае будет удобнее работать не со строкой с пробелами, а с массивом CSS классов. Для этого можно просто разбить нашу строку в массив с помощью функции explode :
Затем необходимо проверить отсутствие переданного класса в этом массиве классов. Это легко сделать с помощью функции in_array :
Если переданного класса нет в массиве классов, то добавим его к уже существующим классам. А если есть — то просто ничего не будем делать.
Давайте реализуем добавление класса:
Рассмотрим теперь вариант, когда в $this->attrs[‘class’] хранится только один класс. На самом деле, реализованный выше код будет прекрасно работать и в этом случае: применение explode к строке без пробела просто вернет массив из одного элемента, представляющего собой эту строку. Ну и далее все наши манипуляции будут работать также.
Давайте соберем весь наш код вместе:
Самостоятельно реализуйте описанный метод и добавьте его в ваш класс Tag . Проверьте работу созданного метода, используя приведенные ниже примеры:
: echo (new Tag(‘input’)) ->setAttr(‘class’, ‘eee bbb’) ->addClass(‘eee’) // такой класс уже есть и не добавится ->open(); ?>?php>
: echo (new Tag(‘input’)) ->addClass(‘eee’) ->addClass(‘bbb’) ->addClass(‘eee’) // такой класс уже есть и не добавится ->open(); ?>?php>
Удаление класса
Давайте теперь реализуем удаление CSS класса. Для этого было бы удобно иметь вспомогательный метод, который будет удалять элемент из массива по тексту этого элемента. В PHP, к сожалению, нет такой встроенной функции, поэтому реализуем ее в виде приватного метода:
Используя метод removeElem мы теперь можем реализовать метод removeClass для удаления CSS классов. Реализуем:
Самостоятельно реализуйте описанный метод и добавьте его в ваш класс Tag . Проверьте его работу, например, так:
setAttr(‘class’, ‘eee zzz kkk’) // добавим 3 класса ->removeClass(‘zzz’) // удалим класс ‘zzz’ ->open(); // выведет ?>?php>
jonathantneal / README.md
CSS Modules lets you write and use simple class names rather than remembering and maintaining long unique class names for every component. CSS Modules mutates all of your classnames from each partials into new, completely unique classnames that will not conflict when they are bundled together into your main CSS file. Then, a JSON file is generated that maps the happy classnames from each file to the unique classname in the combined file. You load this map in PHP, and begin using the easy-to-remember classnames as you wish.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
class CSS_Module |
// CSS Modules by ID |
private $ collection = array (); |
// Create a new CSS Modules collection |
public function __construct ( $ json_file ) |
if ( ! isset( $ json_file ) || ! file_exists( $ json_file ) ) |
return false ; |
> |
// push the JSON data into this instance |
$ this -> collection = json_decode( file_get_contents( $ json_file ), true ); |
> |
// Returns a function for returning class names of the specified CSS Modules ID |
public function get_class_names ( $ id ) |
if ( ! isset( $ id ) ) |
return false ; |
> |
// return an anonymous function as a callback to return |
$ callback = function ( $ class_name ) use ( $ id ) |
return $ this -> get_class_name ( $ id , $ class_name ); |
>; |
return $ callback ; |
> |
public function get_class_name ( $ id , $ class_name ) |
if ( ! isset( $ id ) || ! isset( $ key ) || ! array_key_exists( $ this -> collection , $ id ) ) |
return false ; |
> |
$ alt_class_name = $ this -> collection [ $ id ][ $ key ]; |
return $ alt_class_name ; |
> |
> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
«components/_main-article.css» : |
«container» : » _container_1d980_1 » , |
«title» : » _container_23d3a_2 « |
> |
> |
How to Use CSS in PHP Echo to Add Style (3 Easy Ways)
In this tutorial, learn how to use CSS in PHP echo to add style to the text content. The short answer is: use the style attribute and add CSS to it within single quotes (‘ ‘).
Let’s find out with the examples given below to include CSS in PHP echo.
How to Use CSS in PHP Echo with Style Attribute
You can use the
tag inside the PHP echo statement to add text content. In this tag, you have to add a style attribute within which you can mention CSS as given below:
echo «
This is a text in PHP echo.
» ;
This is a text in PHP echo.
The above example shows the output that changes the appearance of the text content after adding the CSS. You can add as much CSS to it as you want to include.
Add CSS in a Class and Include the Class in PHP Echo
You can mention as many CSS as you want in a class. After that, add the CSS class to the text content with
tag in PHP echo statement as given below:
echo «
This is a text in PHP echo.
» ;
This is a text in PHP echo.
You have to first add as many CSS as you want in a CSS class. The above example added 4 CSS properties in a class to style the text content.
Use Double Quotes and Escape Using Backslash
In addition to the above all methods, you can add CSS class in PHP echo statement using the double quotes. After that, you have to escape the quotes using the slash ( \ ) symbol as given in the example below:
This is a text in PHP echo.
The above example uses the double quotes (” “) escaped using the backslash (\) symbol.
FAQS on How to Use CSS in PHP Echo to Add Style
Q1. Can You Style PHP?
Answer: No, you cannot style PHP as it is a server-side scripting language that cannot interact with CSS directly. However, you can place CSS in the HTML content inside the PHP script. It applies the CSS to the HTML content in the output.
Q2. How Do I Style an Echo Statement in PHP?
Answer: You can add HTML tags inside the echo statement to print HTML in the output. To style an echo statement content, you have to add style attribute in the HTML content to apply CSS. The resulted output is the styled HTML content in the output.
Q3. How to Style PHP Echo Output?
Answer: PHP echo output is the HTML content that prints as a result. You can apply a style to that HTML content using the style attribute within the HTML tag content inside the PHP echo statement. This applies CSS to the PHP echo output.
Q4. How to Add CSS in PHP?
Answer: To add CSS in PHP, you have to use the style attribute within the echo statement of PHP. You can also add CSS in PHP by declaring the style within tag for the required class. After that, you have to add that class within the HTML tag inside the PHP echo statement.
You May Also Like to Read