Эхо-элемент ‹svg› в классе при выполнении условия в функции php

У меня есть простой фрагмент кода php с некоторыми html.

Я хочу сделать следующее:

У меня есть класс php, определяющий некоторые свойства в моем коде. Класс - Статусы

Переменные "Статусов" - Круг, размер, цвет.

Я хочу связать элемент svg, который дает размер и радиус круга, а затем цвет.

У меня есть функция, которая при ее выполнении

person Alex Coetzee    schedule 21.01.2019    source источник


Ответы (2)


Ваше соглашение об именах очень затрудняет понимание ваших намерений, хотя я считаю, что вам нужно следующее. По сути, вы пытаетесь срезать углы.

Каждый «статус» имеет набор переменных, которые образуют круг, как определено в вашем svg. Просто отредактируйте свой класс, чтобы включить их как таковые, и переименуйте свои переменные.

<?php

class myCircle
{

$name;
$height;
$width;
$cx;
$cy;
$r;
$stroke;
$stroke-width;
$fill;

private function _print()
{
    echo "<svg id='$this->name' height='$this->height' width='$this->width'>
    <circle cx='$this->cx' cy='$this->cy' r='$this->r' stroke='$this->stroke' stroke-width='$this->stroke-width' fill='$this->fill' />
    </svg>";
}

private function _set($name, $height, $width, $cx, $cy, $r, $stroke, $stroke-width, $fill)
{
    $this->name = $name;
    $this->height = $height;
    $this->width = $width;
    $this->cx = $cx;
    $this->cy = $cy;
    $this->r = $r;
    $this->stroke = $stroke;
    $this->stroke-width = $stroke-width;
    $this->fill = $fill;
    }

}

Конец класса.

Вы не указали, что именно представляет собой ваше условие $, поэтому я не включил его в свой ответ. Но чтобы выполнить это, а затем использовать свой класс, вам просто нужно сделать следующее:

(либо разместите свой класс myCircle на той же странице php, либо включите его, а затем)

<div id="circles">
<?php if($condition){
    $daily = new myCircle;
    $daily->_set("testCircle", "300", "300", "150", "150", "100", "black", 3, "green");
    $daily->_print();
  }else{
// Nothing?
} ?>
<div>

Или для ваших трех кругов:

<?php     
$circles = array("green", "orange" "red");    
?>

<div id="circles">

<?php 
if($condition){
for($i = 0; $i < count($circles); $i++){
    $daily = new myCircle;
    $daily->_set($circles[$i], "300", "300", "150", "150", "100", "black", 3, $circles[$i]);
    $daily->_print();
  }
} else{
// Do nothing 
}
?> 
</div>
person cmprogram    schedule 21.01.2019
comment
Вы только что заставили меня улыбнуться, большое спасибо @cmprogram! Я сожалею о том, что мои соглашения об именах затрудняют понимание вопроса, поскольку я уже упоминал, что все еще новичок в кодировании, но я приложу усилия, чтобы исправить имена и правильное использование синтаксиса в будущих сообщениях и коде, который я пишу. Вы очень помогли, сэр. - person Alex Coetzee; 21.01.2019
comment
@AlexCoetzee Абсолютно никаких проблем. Большой совет, если вы новичок: называйте свои переменные и классы как хотите, в идеале как-нибудь запоминающимся или что-то для вас значащее. Игнорируйте советы, которые говорят, что вы должны сделать это кратким, это может прийти позже. Что более важно, вы понимаете концепцию и то, что на самом деле происходит. Удачи! - person cmprogram; 21.01.2019
comment
У меня было 2 проблемы при работе с кодом, постоянно выдавали код ошибки undefined variable Sir @cmprogram. Я исправил их, если вы хотите, можете отредактировать свой пост и включить исправления? - person Alex Coetzee; 21.01.2019
comment
Какие были неопределенные переменные? - person cmprogram; 21.01.2019
comment
echo ‹svg id='$name' height='$height' width='$width'› ‹circle cx='$cx' cy='$cy' r='$r' stroke='$stroke' stroke- width='$stroke-width' fill='fill' /› ‹/svg›; Нужно изменить его на echo ‹svg id=\$this-›name\ height=\$this-›height\ width=\$this-›width\› ‹circle cx=\$this-›cx\ cy=\ $this-›cy\ r=\$this-›r\ stroke=\$this-›stroke\ stroke-width=\$this-›stroke_width\ fill=\$this-›fill\ /› ‹/svg› ; - person Alex Coetzee; 21.01.2019
comment
@AlexCoetzee Вы абсолютно правы. Лень с моей стороны. Изменено. - person cmprogram; 21.01.2019
comment
Потрясающе, но огромное спасибо за помощь, сэр. - person Alex Coetzee; 21.01.2019

Я бы сделал что-то вроде этого: (Я предполагаю, что вы получаете значения для переменных цвета и размера динамически.)

$size = 300;
$color = "orange";

echo '<svg id="'.$color.'" height="'.$size.'" width="'.$size.'">
    <circle cx="150" cy="150" r="100" stroke="black" stroke-width="3" fill="'.$color.'" />
</svg>';

Кроме того, вместо повторения вы можете сохранить svg в переменной и использовать его там, где вам нужно.

$size = 300;
$color = "orange";

$theSVG = '<svg id="'.$color.'" height="'.$size.'" width="'.$size.'">
    <circle cx="150" cy="150" r="100" stroke="black" stroke-width="3" fill="'.$color.'" />
</svg>';

а потом:

<?php
function funcName()
{
if (condition) {
   echo $theSVG;

} else {
    echo "";

}
}
person enxaneta    schedule 21.01.2019
comment
Спасибо миллион, это было действительно полезно. Не могли бы вы также внести свой вклад в мою вторую часть вопроса, возможно. Где я спрашиваю, как использовать переменную $daily в моей функции. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь использовать переменную в своей функции, она говорит: «Неопределенная переменная $daily». - person Alex Coetzee; 21.01.2019
comment
Я обновил свой ответ. Я надеюсь, это то, что вы спрашивали - person enxaneta; 21.01.2019