Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Ruby类重写为PHP类_Php_Ruby_Class_Code Conversion - Fatal编程技术网

将Ruby类重写为PHP类

将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

我正在尝试将一些类从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)
        @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文档中找到了这一点。