这个PHP代码结构可以改进吗?
我有一个类存储有关网络数据包的数据:这个PHP代码结构可以改进吗?,php,Php,我有一个类存储有关网络数据包的数据: var $from_ip; var $to_ip; var $from_port; var $to_port; var $tcp_length; var $tcp_stream_text; var $tcp_stream; var $tcp_sequence_dec; 现在,我正在创建一个函数来打印它: function Print_data() { echo "<table>";
var $from_ip;
var $to_ip;
var $from_port;
var $to_port;
var $tcp_length;
var $tcp_stream_text;
var $tcp_stream;
var $tcp_sequence_dec;
现在,我正在创建一个函数来打印它:
function Print_data()
{
echo "<table>";
echo "<tr><td>";
echo "From IP:";
echo "</td><td>";
echo $this->from_ip;
echo "</td></tr>";
echo "<tr><td>";
echo "To IP:";
echo "</td><td>";
echo $this->to_ip;
echo "</td></tr>";
echo "</table>";
}
函数打印_数据()
{
回声“;
回声“;
回声“来自IP:”;
回声“;
echo$this->from_ip;
回声“;
回声“;
回声“到IP:”;
回声“;
echo$this->to_ip;
回声“;
回声“;
}
有什么办法可以使它最优化吗?正如你可能注意到的,将会有很多相同的行。(例外,可以编写一个函数来显示它)。但是VAR呢?您的变量,但是如果它们在一个类中,我建议定义它们的访问级别(private
,public
,protected
,等等):
这就是我(个人)编写Print_data()
函数的方式:
function Print_data() {
?>
<table>
<tr>
<td>From IP:</td>
<td><?php echo $this->from_ip ?></td>
</tr>
<tr>
<td>To IP:</td>
<td><?php echo $this->to_ip ?></td>
</tr>
</table>
<?php
}
函数打印_数据(){
?>
来自IP:
到IP:
变量,但如果它们在类中,我建议定义它们的访问级别(private
,public
,protected
,等等):
这就是我(个人)编写Print_data()
函数的方式:
function Print_data() {
?>
<table>
<tr>
<td>From IP:</td>
<td><?php echo $this->from_ip ?></td>
</tr>
<tr>
<td>To IP:</td>
<td><?php echo $this->to_ip ?></td>
</tr>
</table>
<?php
}
函数打印_数据(){
?>
来自IP:
到IP:
变量,但如果它们在类中,我建议定义它们的访问级别(private
,public
,protected
,等等):
这就是我(个人)编写Print_data()
函数的方式:
function Print_data() {
?>
<table>
<tr>
<td>From IP:</td>
<td><?php echo $this->from_ip ?></td>
</tr>
<tr>
<td>To IP:</td>
<td><?php echo $this->to_ip ?></td>
</tr>
</table>
<?php
}
函数打印_数据(){
?>
来自IP:
到IP:
变量,但如果它们在类中,我建议定义它们的访问级别(private
,public
,protected
,等等):
这就是我(个人)编写Print_data()
函数的方式:
function Print_data() {
?>
<table>
<tr>
<td>From IP:</td>
<td><?php echo $this->from_ip ?></td>
</tr>
<tr>
<td>To IP:</td>
<td><?php echo $this->to_ip ?></td>
</tr>
</table>
<?php
}
函数打印_数据(){
?>
来自IP:
到IP:
这应该对你们班有用
var $from_ip, $to_ip, $from_port, $to_port, $tcp_length, $tcp_stream_text, $tcp_stream, $tcp_sequence_dec;
function Print_data()
{
echo <<<EOF
<table>
<tr><td>
From IP:
</td><td>
$this->from_ip
</td></tr>
<tr><td>
To IP:
</td><td>
$this->to_ip
</td></tr>
</table>
EOF;
}
var$from_ip、$to_ip、$from_port、$to_port、$tcp_length、$tcp_stream_text、$tcp_stream、$tcp_sequence_dec;
函数Print_data()
{
echo这应该对你们班有用
var $from_ip, $to_ip, $from_port, $to_port, $tcp_length, $tcp_stream_text, $tcp_stream, $tcp_sequence_dec;
function Print_data()
{
echo <<<EOF
<table>
<tr><td>
From IP:
</td><td>
$this->from_ip
</td></tr>
<tr><td>
To IP:
</td><td>
$this->to_ip
</td></tr>
</table>
EOF;
}
var$from_ip、$to_ip、$from_port、$to_port、$tcp_length、$tcp_stream_text、$tcp_stream、$tcp_sequence_dec;
函数Print_data()
{
echo这应该对你们班有用
var $from_ip, $to_ip, $from_port, $to_port, $tcp_length, $tcp_stream_text, $tcp_stream, $tcp_sequence_dec;
function Print_data()
{
echo <<<EOF
<table>
<tr><td>
From IP:
</td><td>
$this->from_ip
</td></tr>
<tr><td>
To IP:
</td><td>
$this->to_ip
</td></tr>
</table>
EOF;
}
var$from_ip、$to_ip、$from_port、$to_port、$tcp_length、$tcp_stream_text、$tcp_stream、$tcp_sequence_dec;
函数Print_data()
{
echo这应该对你们班有用
var $from_ip, $to_ip, $from_port, $to_port, $tcp_length, $tcp_stream_text, $tcp_stream, $tcp_sequence_dec;
function Print_data()
{
echo <<<EOF
<table>
<tr><td>
From IP:
</td><td>
$this->from_ip
</td></tr>
<tr><td>
To IP:
</td><td>
$this->to_ip
</td></tr>
</table>
EOF;
}
var$from_ip、$to_ip、$from_port、$to_port、$tcp_length、$tcp_stream_text、$tcp_stream、$tcp_sequence_dec;
函数Print_data()
{
echo尝试使用数组!使用关联数组将键设置为您想要的任何值,我只是引用了变量名。值就是您现在拥有的值
$data = array(
"To IP" => $to_ip,
"From IP" => $from_port,
"To Port" => $to_port,
"TCP Length" => $tcp_length,
"TCP Stream Text" => $tcp_stream_text,
"TCP Stream" => $tcp_stream,
"TCP Sequence Dec" => $tcp_sequence_dec
);
然后迭代!使用foreach循环来获取键和值,然后爆炸。更干净
function Print_data() {
echo "<table>";
foreach ($this->data as $key => $value) {
echo "<tr><td>$key</td><td>$value</td></tr>";
}
echo "</table>";
}
函数打印_数据(){
回声“;
foreach($此->数据为$key=>$value){
回显“$key$value”;
}
回声“;
}
尝试使用数组!使用关联数组将键设置为您想要的任何值,我只是引用了变量名。值就是您现在拥有的值
$data = array(
"To IP" => $to_ip,
"From IP" => $from_port,
"To Port" => $to_port,
"TCP Length" => $tcp_length,
"TCP Stream Text" => $tcp_stream_text,
"TCP Stream" => $tcp_stream,
"TCP Sequence Dec" => $tcp_sequence_dec
);
然后迭代!使用foreach循环来获取键和值,然后爆炸。更干净
function Print_data() {
echo "<table>";
foreach ($this->data as $key => $value) {
echo "<tr><td>$key</td><td>$value</td></tr>";
}
echo "</table>";
}
函数打印_数据(){
回声“;
foreach($此->数据为$key=>$value){
回显“$key$value”;
}
回声“;
}
尝试使用数组!使用关联数组将键设置为您想要的任何值,我只是引用了变量名。值就是您现在拥有的值
$data = array(
"To IP" => $to_ip,
"From IP" => $from_port,
"To Port" => $to_port,
"TCP Length" => $tcp_length,
"TCP Stream Text" => $tcp_stream_text,
"TCP Stream" => $tcp_stream,
"TCP Sequence Dec" => $tcp_sequence_dec
);
然后迭代!使用foreach循环来获取键和值,然后爆炸。更干净
function Print_data() {
echo "<table>";
foreach ($this->data as $key => $value) {
echo "<tr><td>$key</td><td>$value</td></tr>";
}
echo "</table>";
}
函数打印_数据(){
回声“;
foreach($此->数据为$key=>$value){
回显“$key$value”;
}
回声“;
}
尝试使用数组!使用关联数组将键设置为您想要的任何值,我只是引用了变量名。值就是您现在拥有的值
$data = array(
"To IP" => $to_ip,
"From IP" => $from_port,
"To Port" => $to_port,
"TCP Length" => $tcp_length,
"TCP Stream Text" => $tcp_stream_text,
"TCP Stream" => $tcp_stream,
"TCP Sequence Dec" => $tcp_sequence_dec
);
然后迭代!使用foreach循环来获取键和值,然后爆炸。更干净
function Print_data() {
echo "<table>";
foreach ($this->data as $key => $value) {
echo "<tr><td>$key</td><td>$value</td></tr>";
}
echo "</table>";
}
函数打印_数据(){
回声“;
foreach($此->数据为$key=>$value){
回显“$key$value”;
}
回声“;
}
如前所述,var已被弃用
这是我提出的解决方案
<?php
class TCP {
protected $from_ip;
protected $to_ip;
protected $from_port;
protected $to_port;
protected $tcp_length;
protected $tcp_stream_text;
protected $tcp_stream;
protected $tcp_sequence_dec;
private $template = "<table>
<tr>
<td>From IP:</td>
<td>%s</td>
</tr>
<tr>
<td>To IP:</td>
<td>%s</td>
</tr>
</table>";
static public function render_template() {
return sprintf(self::$template, self::$from_ip, self::$to_ip);
}
}
print TCP::render_template();
如前所述,var已被弃用
这是我提出的解决方案
<?php
class TCP {
protected $from_ip;
protected $to_ip;
protected $from_port;
protected $to_port;
protected $tcp_length;
protected $tcp_stream_text;
protected $tcp_stream;
protected $tcp_sequence_dec;
private $template = "<table>
<tr>
<td>From IP:</td>
<td>%s</td>
</tr>
<tr>
<td>To IP:</td>
<td>%s</td>
</tr>
</table>";
static public function render_template() {
return sprintf(self::$template, self::$from_ip, self::$to_ip);
}
}
print TCP::render_template();
如前所述,var已被弃用
这是我提出的解决方案
<?php
class TCP {
protected $from_ip;
protected $to_ip;
protected $from_port;
protected $to_port;
protected $tcp_length;
protected $tcp_stream_text;
protected $tcp_stream;
protected $tcp_sequence_dec;
private $template = "<table>
<tr>
<td>From IP:</td>
<td>%s</td>
</tr>
<tr>
<td>To IP:</td>
<td>%s</td>
</tr>
</table>";
static public function render_template() {
return sprintf(self::$template, self::$from_ip, self::$to_ip);
}
}
print TCP::render_template();
如前所述,var已被弃用
这是我提出的解决方案
<?php
class TCP {
protected $from_ip;
protected $to_ip;
protected $from_port;
protected $to_port;
protected $tcp_length;
protected $tcp_stream_text;
protected $tcp_stream;
protected $tcp_sequence_dec;
private $template = "<table>
<tr>
<td>From IP:</td>
<td>%s</td>
</tr>
<tr>
<td>To IP:</td>
<td>%s</td>
</tr>
</table>";
static public function render_template() {
return sprintf(self::$template, self::$from_ip, self::$to_ip);
}
}
print TCP::render_template();
可能不是最快的,但我使用类似这样的方法将对象转换为关联数组:
public function printObject($object)
{
$reflectionClass = new ReflectionClass(get_class($object));
foreach ($reflectionClass->getProperties() as $property)
{
$property->setAccessible(true);
echo "Prop: {$property->getName()}, Value: {$property->getValue($object)} \n";
$property->setAccessible(false);
}
}
也许不是最快的,但我使用类似这样的方法将对象转换为关联数组:
public function printObject($object)
{
$reflectionClass = new ReflectionClass(get_class($object));
foreach ($reflectionClass->getProperties() as $property)
{
$property->setAccessible(true);
echo "Prop: {$property->getName()}, Value: {$property->getValue($object)} \n";
$property->setAccessible(false);
}
}
也许不是最快的,但我使用类似这样的方法将对象转换为关联数组:
public function printObject($object)
{
$reflectionClass = new ReflectionClass(get_class($object));
foreach ($reflectionClass->getProperties() as $property)
{
$property->setAccessible(true);
echo "Prop: {$property->getName()}, Value: {$property->getValue($object)} \n";
$property->setAccessible(false);
}
}
也许不是最快的,但我使用类似这样的方法将对象转换为关联数组:
public function printObject($object)
{
$reflectionClass = new ReflectionClass(get_class($object));
foreach ($reflectionClass->getProperties() as $property)
{
$property->setAccessible(true);
echo "Prop: {$property->getName()}, Value: {$property->getValue($object)} \n";
$property->setAccessible(false);
}
}
你是否必须只打印特定的变量
?你可以尝试使用数组来代替迭代。这是一种糟糕的形式。分开你的代码。将你的变量放在一个数组中。我猜当你必须同时回显这么多变量并生成HTML时,你会感到困惑。显然,这段代码很难管理。你可以如果使用Smarty=>这样的模板引擎,您是否必须只打印特定的变量
?您可以尝试使用数组来代替迭代。这是一种糟糕的形式。请分离代码。将变量放在数组中。我想当您必须回显这么多变量时,您可能会感到困惑