Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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/8/variables/2.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
Php 使用变量存储参数数据是正常做法吗?_Php_Variables - Fatal编程技术网

Php 使用变量存储参数数据是正常做法吗?

Php 使用变量存储参数数据是正常做法吗?,php,variables,Php,Variables,在一些PHP示例中,我看到人们将事物分配给速记变量,然后使用速记变量。这是惯例吗?这是好的做法吗 $name = $_POST['name']; 然后他们在这里使用$name来回显它或将它用作函数参数 另一个例子是: DEFINE('DB_USER', 'username'); mysqli_connect(DB_USER.......); 我从事php专业已经5年了 通常在获取post变量时,这是一个好主意,但更常见的是将其封装在isset三元if语句中: $name=isset($\u

在一些PHP示例中,我看到人们将事物分配给速记变量,然后使用速记变量。这是惯例吗?这是好的做法吗

$name = $_POST['name'];
然后他们在这里使用$name来回显它或将它用作函数参数

另一个例子是:

DEFINE('DB_USER', 'username');
mysqli_connect(DB_USER.......);

我从事php专业已经5年了

通常在获取post变量时,这是一个好主意,但更常见的是将其封装在isset三元if语句中:

$name=isset($\u POST['name'])$_POST['name']:false

这样,如果未传递变量,则不会收到未定义变量警告


此外,它还节省了您每次键入$u POST的时间,并且有助于更好地封装代码

我从事php专业已经有5年了

通常在获取post变量时,这是一个好主意,但更常见的是将其封装在isset三元if语句中:

$name=isset($\u POST['name'])$_POST['name']:false

这样,如果未传递变量,则不会收到未定义变量警告

此外,它还节省了您每次键入$u POST的时间,并且有助于更好地封装代码

优点:

  • 速记变量更容易输入和记忆
  • 一个速记变量可能允许一个昂贵的操作只执行一次,而不是重复多次。但是要小心过早的优化!大多数情况下,这种优化是不成熟的
  • 可以使用速记变量制作副本,副本可以在不修改原始变量的情况下进行更改
  • 在某些语言中,可以使用速记变量创建一个副本,即使修改了原始变量,该副本也能保证持久存在
缺点:

  • 不加区分地使用速记变量可能会导致相同值的多个名称
  • 在某些语言和情况下,速记变量会使用额外的资源生成不必要的副本
优点:

  • 速记变量更容易输入和记忆
  • 一个速记变量可能允许一个昂贵的操作只执行一次,而不是重复多次。但是要小心过早的优化!大多数情况下,这种优化是不成熟的
  • 可以使用速记变量制作副本,副本可以在不修改原始变量的情况下进行更改
  • 在某些语言中,可以使用速记变量创建一个副本,即使修改了原始变量,该副本也能保证持久存在
缺点:

  • 不加区分地使用速记变量可能会导致相同值的多个名称
  • 在某些语言和情况下,速记变量会使用额外的资源生成不必要的副本

    • 编写代码时最重要的事情是编写可读的代码,不仅是为他人编写,也是为自己编写。我们一直在这样做,即抽象和应用oo编程方法。
      因此,预定义我们将要使用的变量并设置默认值非常有意义

      我会这样做

      class ValueTooLong extends Exception {}
      
      function R($param, $default=null, $type='string', $max_length=null) {
          if(!isset($_REQUEST[$param]))
              return $default;
          $r = $_REQUEST[$param];
          if($max_length && strlen($r) > $max_length)
              throw new ValueTooLong('Length of '.$param.' was '.strlen($r).'. Max length is: '.$max_length);
          if($type === 'bool' || $type === 'boolean') {
              if($r === 'false' || $r === 'no')
                  return false;
              return !empty($r);
          }
          settype($r, $type);
          return $r;
      }
      
      # Which allows me do do this:
      $name = R('name');
      # or:
      $count = R('count', 1, 'int');
      

      编辑:函数现在接受一个max_length参数(如注释所示),并在请求参数的值太长时抛出一个异常

      编写代码时最重要的事情是编写可读的代码,不仅是为他人编写,也是为自己编写。我们一直在这样做,即抽象和应用oo编程方法。
      因此,预定义我们将要使用的变量并设置默认值非常有意义

      我会这样做

      class ValueTooLong extends Exception {}
      
      function R($param, $default=null, $type='string', $max_length=null) {
          if(!isset($_REQUEST[$param]))
              return $default;
          $r = $_REQUEST[$param];
          if($max_length && strlen($r) > $max_length)
              throw new ValueTooLong('Length of '.$param.' was '.strlen($r).'. Max length is: '.$max_length);
          if($type === 'bool' || $type === 'boolean') {
              if($r === 'false' || $r === 'no')
                  return false;
              return !empty($r);
          }
          settype($r, $type);
          return $r;
      }
      
      # Which allows me do do this:
      $name = R('name');
      # or:
      $count = R('count', 1, 'int');
      


      EDIT:函数现在接受一个max_length参数(如注释所示),如果请求参数的值太长,就会抛出一个异常

      是的,完全正常。第二个示例中有一个常量,而不是变量。为什么人们不直接使用它,而不是将其分配给另一个变量?很抱歉,我在问为什么人们选择这样做而不是直接使用价值观,但我不知道怎么问。变量和常量!就个人而言,
      $name=$\u POST['name']
      是不允许的,因为您正在对已经存在的内容进行“复制”。但是,
      DEFINE('DB_USER','username')
      非常完美,因为这是一个常量,应该定义一次(在单独的PHP脚本上),并在需要时包含在PHP中(使用
      require_once('name of script with constants'))
      。这还允许仅在一个位置快速更改
      用户名
      密码
      。是的,非常正常。第二个示例中有一个常量,而不是变量。为什么人们不直接使用它,而不是将其分配给另一个变量?很抱歉,我想问人们为什么选择这样做而不是使用值直接的,但我不知道怎么问。变量和常量!就我个人而言,
      $name=$\u POST['name']
      是不可以的,因为你正在“复制”已经存在的东西。但是,
      定义('DB\u USER','username')
      非常完美,因为这是一个常量,应该定义一次(在单独的PHP脚本上)并在需要时包含在PHP中(带有
      require\u once('带有常量的脚本名称')
      。这还允许只在一个位置快速更改
      用户名
      密码
      。创建数据副本是否浪费时间?是否会复制内存?当您将数据分配给name时,php会在$\u POST变量中存储指向数据的指针。我知道php不会让您访问指针,而是在引擎盖下是的。检查“tim”对此帖子的回答:我宁愿使用null而不是false来表示变量尚未设置。true/false应该用于布尔变量。您可以在那里使用任何您想要的。这取决于您的代码如何工作。是w吗