Echo <svg>элемент в классе, когда условие выполнено в функции php - PullRequest
0 голосов
/ 21 января 2019

У меня есть простая часть кода в сочетании с некоторыми .

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

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

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

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

У меня есть функция, которая при выполнении инструкции должна будет отображать круг класса с размером и цветом в зависимости от выполняемого условия.

Вот класс:

<?php

class Statuses
{

var $circle;
var $size;
var $color;

public function print_condition()
{
    echo $this->circle;
    echo $this->size;
    echo $this->color;
}

public function condition($circle, $size, $color)
{
    $this->circle = $circle;
    $this->size = $size;
    $this->color = $color;
}

}

$daily = new Statuses;

$daily->condition("height=\"300\" width=\"300\"", "cx=\"150\" cy=\"150\" r=\"100\"", "stroke=\"black\" stroke-width=\"3\" fill=\"green\"");

$daily->print_condition();

Вот функция:

<?php
function funcName()
{
if (condition) {
    echo "I want to echo the 'daily' variable here";

} else {
    echo "I want to echo the 'none' variable here";

}
}

и вот элементы svg:

  <div id="circles">

<svg id="green" height="300" width="300">
    <circle cx="150" cy="150" r="100" stroke="black" stroke-width="3" fill="green" />
</svg>
<br>
<svg id="orange" height="300" width="300">
    <circle cx="150" cy="150" r="100" stroke="black" stroke-width="3" fill="orange" />
</svg>
<br>
<svg id="red" height="300" width="300">
    <circle cx="150" cy="150" r="100" stroke="black" stroke-width="3" fill="red" />
</svg>

</div>

Я не уверен, как заставить элемент svg правильно отображаться в переменной, и я не уверен, как вызвать переменную в моей функции.

Ваш совет очень ценится.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

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

Каждый «статус» имеет набор переменных, которые образуют круг, как определено в вашем 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>
0 голосов
/ 21 января 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 "";

}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...