PHP基础知识(二)
Global namespace //看不懂看下面的中文 中英结合看看
When using namespaces, you may find that internal functions(内部(内置)函数) are hidden by functions you wrote. To fix this, refer to the global function by using a backslash before the function name.
<?php namespace phptherightway; function fopen() { $file = \fopen(); // Our function name is the same as an internal function. // Execute the function from the global space by adding ‘\‘. } function array() { $iterator = new \ArrayIterator(); // ArrayIterator is an internal class. Using its name without a backslash // will attempt to resolve it within your namespace. }
global space (全局空间):
如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。
<?php namespace A\B\C; /* 这个函数是 A\B\C\fopen */ function fopen() { /* ... */ $f = \fopen(...); // 调用全局的fopen函数 return $f; } ?>
Strings
Concatenation
- If your line extends beyond the recommended line length (120 characters), consider concatenating your line
- For readability it’s best to use concatenation operators over concatenating assignment operators
- While within the original scope of the variable, indent when concatenation uses a new line
<?php $a = ‘Multi-line example‘; // concatenating assignment operator (.=) $a .= "\n"; $a .= ‘of what not to do‘; vs. $a = ‘Multi-line example‘ // concatenation operator (.) . "\n" // indenting new lines . ‘of what to do‘;
String types
String types are a constant feature within the PHP community, but hopefully this section will explain the differences between the string types and their benefits/uses.
Single quotes
Single quotes are the simplest way to define a string and are often the quickest. Their speed stems from PHP not parsing the string (doesn’t parse for variables). They’re best suited for:
- Strings that do not need to be parsed
- Writing of a variable into plain text
<?php echo ‘This is my string, look at how pretty it is.‘; // no need to parse a simple string /** * Output: * * This is my string, look at how pretty it is. */
Double quotes
Double quotes are the Swiss army knife of strings, but are slower due to the string being parsed. They’re best suited for:
- Escaped strings
- Strings with multiple variables and plain text
- Condensing multi-line concatenation, and improving readability
<?php echo ‘phptherightway is ‘ . $adjective . ‘.‘ // a single quotes example that uses multiple concatenating for . "\n" // variables and escaped string . ‘I love learning‘ . $code . ‘!‘; vs. echo "phptherightway is $adjective.\n I love learning $code!" // Instead of multiple concatenating, double quotes // enables us to use a parsable string
While using double quotes that contain variables, it’s often the case that the variable will be touching another character. This will result in PHP not parsing the variable due to the variable being camouflaged. To fix this problem, wrap the variable within a pair of curly brackets.
<?php $juice = ‘plum‘; echo "I drank some juice made of $juices"; // $juice cannot be parsed vs. $juice = ‘plum‘; echo "I drank some juice made of {$juice}s"; // $juice will be parsed /** * Complex variables will also be parsed within curly brackets */ $juice = array(‘apple‘, ‘orange‘, ‘plum‘); echo "I drank some juice made of {$juice[1]}s"; // $juice[1] will be parsed
Nowdoc syntax
Heredoc syntax
见PHP手册。
Ternary operators(三元运算操作符)
Ternary operators are a great way to condense code, but are often used in excess. While ternary operators can be stacked/nested, it is advised to use one per line for readability.
<?php $a = 5; echo ($a == 5) ? ‘yay‘ : ‘nay‘; vs. // nested ternary $b = 10; echo ($a) ? ($a == 5) ? ‘yay‘ : ‘nay‘ : ($b == 10) ? ‘excessive‘ : ‘:(‘; // excess nesting, sacrificing readability
To ‘return’ a value with ternary operators use the correct syntax.
<?php $a = 5; echo ($a == 5) ? return true : return false; // this example will output an error vs. $a = 5; return ($a == 5) ? ‘yay‘ : ‘nope‘; // this example will return ‘yay‘
Variable declarations
<?php $about = ‘A very long string of text‘; // uses 2MB memory echo $about; vs. echo ‘A very long string of text‘; // uses 1MB memory
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。