调用参数的次数

时间:2017-09-24 16:03:04

标签: php

我只是自己学习PHP,我有一个问题,希望你能帮忙。

拳头风格

<?php
class Fist_style
{
    function method_1()
    {
        global $a;
        return $a + 1; 
    }

    function method_2()
    {
        global $a;
        return $a - 1;
    }

    function method_3()
    {
        $call_1 = $this->method_1();
        $call_2 = $this->method_2();
    }

    // In this case, how many times $a was called?
}

第二种风格

<?php
class Second_style
{
    function method_1($a)
    {
        return $a + 1; 
    }

    function method_2($a)
    {
        return $a - 1;
    }

    function method_3()
    {
        global $a;

        //I will call both method_1 and method_2
        $call_1 = $this->method_1($a);
        $call_2 = $this->method_2($a);

        //............
    }

    // In this case, how many times $a was called
}
?>

问题在我的代码中,开发时哪种风格会更好?

1 个答案:

答案 0 :(得分:1)

使用全局变量通常会导致灾难 - 因为许多有经验的人都乐意告诉你。

在类中使用状态的正常方法是声明一个类属性:

<?
class MyClass
{
    public $a;

    function __construct($valueForA) {
        $this->a = $valueForA;
    }

    function increment()
    {
       $this->a += 1; 
    }

    function decrement()
    {
       $this->a -= 1; 
    }

    function plusminus()
    {
        $this->increment();
        $this->decrement();
    }
}

可以这样使用:

$anInstance = new MyClass(10); // sets a to 10 by calling the __construct method
$anInstance->increment();
echo($anInstance->a); // 11
$anInstance->decrement();
echo($anInstance->a); // 10

在PHP here中阅读有关oop的更多信息。

至于代码中的问题,$a不是一种方法,因此无法调用

此外,return $a -1;不会更改全局$a(不确定是否有意)。

修改

如果您有像

这样的功能增量
function increment ($var) {
    $var = $var - 1;
    return $var;
}

然后$var作为值传入 - 如果你传入5,php只关心5,而不是名字。例如:

$a = 5;
$incremented = increment($a);
echo($a); // echoes 5;
echo($incremented); //echoes 6

我建议在php中阅读scoping