Php 初学者。。。对同一函数中的同名变量感到困惑 1
它不是布尔值。这是默认值。所以,如果您调用不带参数的函数,它会将Php 初学者。。。对同一函数中的同名变量感到困惑 1,php,oop,boolean,Php,Oop,Boolean,它不是布尔值。这是默认值。所以,如果您调用不带参数的函数,它会将$userId视为” 注=是赋值运算符,=是比较运算符 问题1:$userID作为可选参数传递给类的构造函数。这意味着您可以使用或实例化此类的对象,而无需传递用户id: 例如: 问题2:$userID在第5行是一个类属性。可以使用$this->userID从第12行的构造函数访问它$第10行中的userID仅存在于函数内部。这不是一个布尔参数,而是一个默认值为空字符串的参数。如果您没有设置默认值,并且实例化了这个类中的一个对象,它
$userId
视为”
注
=
是赋值运算符,=
是比较运算符 问题1:$userID
作为可选参数传递给类的构造函数。这意味着您可以使用或实例化此类的对象,而无需传递用户id:例如:
问题2:$userID在第5行是一个类属性。可以使用
$this->userID
从第12行的构造函数访问它$第10行中的userID仅存在于函数内部。这不是一个布尔参数,而是一个默认值为空字符串的参数。如果您没有设置默认值,并且实例化了这个类中的一个对象,它将抛出一个错误,因为缺少一个参数
不,它们不一样。一个是对象变量,另一个是参数变量
注意:这段代码很旧(var关键字,everything是public等)好的
new ClassName()
语句时都会调用该方法。之所以使用function\uu构造($userID='')
,而不是function\uu构造($userID)
,是因为我们想给它一个默认值。这意味着用户可以调用newapc()
或newapc(“userID”)
第8行是一个函数参数。当使用参数(
new APC(“userID”)
)调用该方法时,该参数将存储在函数内部的该变量中。巧合的是,他们俩的名字都一样
他没有使用另一个词,因为这是为了传达这样一个信息:在新ACL()中的()之间放置的任何内容都将成为ACL副本(实例)中的$this->userID 你为什么认为它是布尔型的?它甚至默认为一个空字符串,那么为什么你要假设它是一个布尔变量呢?只是一个旁注,它是
\uuuu construct()
而不是\uu constructor()
。最好找一个不混合PHP4和PHP5的教程。。。一个好的PHP5教程将为$perms、$userID和$userRoles分配“可见性”,而不是简单地使用“var”@Tom,谢谢。这是一个较老的教程,但我一直在使用_construct()。@MarkBaker,谢谢你指出这一点。我只是用“public”而不是“var”来养成分配“可见性”的习惯,但我肯定在寻找新的PHP5教程。我还学到了很多东西。哇,我觉得自己很笨。我需要去睡觉了。。我把它读作布尔值,甚至没有把它读作分配给空字符串的变量。谢谢,我在问题1上犯了一个错误。关于问题2,可以肯定地说,第5/12/15行中的userID是相同的,第10/12行中的userID只存在于函数内部,是其他内容。可以将其重命名为$abcdef,这样就不会有问题了?事实上,它们都被称为userID,这让我很困惑。如果使用$this->userID,第5行中的$userID只能从函数内部访问。函数中名为$userID的所有内容都可以重命名为您想要的任何内容,并且不会影响任何内容。现在,这非常有意义。谢谢peter。这是我能找到的唯一一个完整的登录系统教程,有完整的解释和源代码,但它是从2008年或2009年开始的。我不确定哪些元素需要更改为private或protected,因为var与public是一样的。但我想我得改天再学。谢谢你澄清了第二个问题。啊,是的,这就是我说的“开一门新课”的意思。我的意思是使用类ACL并实例化它,然后“创建”该类的新对象。我的失误。对你答案的回应:1)呼呼呼呼。我现在明白了。想要给它一个默认值,并且能够调用APC()或新的APC(“userID”)。。说得很清楚。非常感谢。2) 谢谢你澄清这一点。这让我想问,使用相同的“名称”是否被视为不好的编码习惯,例如在本例中,编码器使对象属性和函数参数都是相同的东西?还是很常见?我知道在非常小的构造函数中(即只设置变量,不采取任何进一步的操作),我通常使用相同名称的变量。在事情可能变得棘手的情况下。我对参数和属性使用不同的名称。谢谢,该睡觉了!关于他为什么用同一个词的好消息,我不知道。
1 <?php
2 class ACL
3 {
4 var $perms = array(); //Array : Stores the permissions for the user
5 var $userID = 0; //Integer : Stores the ID of the current user
6 var $userRoles = array(); //Array : Stores the roles of the current user
7
8 function __constructor($userID = '')
9 {
10 if ($userID != '')
11 {
12 $this->userID = floatval($userID);
13 } else {
14 $this->userID = floatval($_SESSION['userID']);
15 }
16 $this->userRoles = $this->getUserRoles('ids');
17 $this->buildACL();
18 }
$acl = new ACL(); //valid
$acl = new ACL($aUersId); // also valid
function helloWorld($whattosay = 'Hello World') {
echo $whattosay;
}
helloWorld()
// prints Hello World
helloWorld("kthxbai")
// prints kthxbai