将Ruby类重写为PHP类
我正在尝试将一些类从Ruby转换为PHP,用于我正在进行的一个项目。我想我差不多有了它,但我对Ruby一无所知,所以我正在努力理解一些方面,以及PHP中的等价物是什么 因此,Ruby类如下所示:将Ruby类重写为PHP类,php,ruby,class,code-conversion,Php,Ruby,Class,Code Conversion,我正在尝试将一些类从Ruby转换为PHP,用于我正在进行的一个项目。我想我差不多有了它,但我对Ruby一无所知,所以我正在努力理解一些方面,以及PHP中的等价物是什么 因此,Ruby类如下所示: class Log def initialize (x,y,list,url) @line = 0 @x=x @y=y @url=url @list=list @points = Hash.new(0
class Log
def initialize (x,y,list,url)
@line = 0
@x=x
@y=y
@url=url
@list=list
@points = Hash.new(0)
@list.each do |point|
@points[point.xy] +=1
end
@reps = @points.values.max
end
attr_reader :x, :y, :list, :reps, :url
def next
coord = @list[@line]
@line += 1
return coord
end
end
以下是我迄今为止用PHP编写的内容:(我还添加了一个注释,说明了原版应该做什么)
我不擅长ruby,因此我很难理解代码,但这应该非常准确:
<?php
class Log {
private $line = 0;
private $x;
private $y;
private $url;
private $list;
private $reps;
public function __construct($x, $y, $url, $list)
{
$this->x = $x;
$this->y = $y;
$this->url = $url;
$this->list = $list;
$points = [];
foreach ($list as $point) {
$points[$point['xy']] += 1;
}
$this->reps = max($points);
}
public function getX()
{
return $this->x;
}
public function getY()
{
return $this->y;
}
public function getUrl()
{
return $this->url;
}
public function getList()
{
return $this->list;
}
public function getReps()
{
return $this->reps;
}
public function next()
{
$coord = $this->list[$this->line];
$this->line += 1;
return $coord;
}
}
我不擅长ruby,因此我很难理解代码,但这应该非常准确:
<?php
class Log {
private $line = 0;
private $x;
private $y;
private $url;
private $list;
private $reps;
public function __construct($x, $y, $url, $list)
{
$this->x = $x;
$this->y = $y;
$this->url = $url;
$this->list = $list;
$points = [];
foreach ($list as $point) {
$points[$point['xy']] += 1;
}
$this->reps = max($points);
}
public function getX()
{
return $this->x;
}
public function getY()
{
return $this->y;
}
public function getUrl()
{
return $this->url;
}
public function getList()
{
return $this->list;
}
public function getReps()
{
return $this->reps;
}
public function next()
{
$coord = $this->list[$this->line];
$this->line += 1;
return $coord;
}
}
ruby中的attr\u reader
只为属性设置getter,因此不要在php中将它们写成public
,而是将它们设为私有并编写getter函数getX()
@shady atef-谢谢。我修改了OP以反映这些变化。我不确定下一步是什么
是特殊功能还是ruby或者no。。因此,我将观察这个问题并等待回答。我只是将它定义为一个函数,因为它在rb类代码中。根据注释,我假设rb代码中的下一个定义是在匹配的url集中找到下一个点集或坐标集。我试图找到最好的比较方法,并发现了这一点:在PHP文档中。attr_reader
在ruby中只为属性设置getter,因此不要在PHP中将它们写为public
,而是将它们设为私有并编写getter函数getX()
@shady atef-谢谢。我修改了OP以反映这些变化。我不确定下一步是什么
是特殊功能还是ruby或者no。。因此,我将观察这个问题并等待回答。我只是将它定义为一个函数,因为它在rb类代码中。根据注释,我假设rb代码中的下一个定义是在匹配的url集中找到下一个点集或坐标集。我试图找到比较的最佳方法,并在PHP文档中找到了这一点。