当您打开第一本编程书时,您已经阅读了有关它们的信息。
您已经写了数千遍,
您将在明天和5年后使用它们,
这些是什么?
PHP构造!
这些是知识的基础,语言的核心,
我知道您目前在想什么:
“来吧,我已经很长时间了,现在我在这里阅读有关结构的文章?”
只是阅读整个帖子,
我向您保证,即使您已经编码很长时间,您也不会发现一个细节,而是几个小细节。
PHP构造介绍
PHP函数和构造之间有很大的不同,
首先将它们映射,然后简化为一组要解析的PHP构造,后者不能用作回调,但是解析器可以直接理解它们。
当涉及到参数和括号时,构造也遵守不同的规则。
这是一个例子:
echo “Hello World”;
echo “Hello”, ”World”;
echo(“Hello”,”World”);
我可以肯定,您之前已经看过echo,上面是echo结构的几种变体。
请注意,最后一条语句将引发语法错误。
PHP提供了许多构造。
它们的功能在后台运行,并且在大多数情况下,例如在处理数组时,它们的速度比您自己创建的代码快。
在下面,您将找到PHP 7中最常用的构造的完整列表。
您不需要内心地学习它们,您会意识到,一段时间后它们将成为第二天性,
您可以将本系列的这一部分作为笔记,在有疑问或需要时可以随时咨询。
顺便说一下,这是“ 专家开发人员的PHP基础 ”系列文章的第二部分。
如果您还没有,
看看其他部分
PHP的复兴
如何使用变量(PHP 7)
表中的内容:
- 断言
- 数组
- 宣布
- 滴答声
- 编码方式
- 严格
- 死亡与退出
- 做,而
- 回显并打印
- else&elseif&if&切换
- 空的
- 为和foreach
- 评估
- 去
- 包含并要求
- 实例
- 代替
- isset
- 清单
- 返回
- 未设定
- 注释
- 结论
断言()
此构造采用两个参数,第一个是断言,第二个是如果断言为false则需要显示的消息。
您可以使用此控件来改变脚本的流程。
assert('2 < 1', 'Two is less than one');array()
该语言构造非常易于理解,用于创建数组。
$capricciosa = array('tomato sauce', 'mozzarella', 'artichoke', 'mushrooms', 'anchovies');
宣布
这个结构濒临灭绝,
您很少会在代码中碰到它,因为少数程序员知道它的存在,甚至很少知道如何正确使用它。
声明的语法类似于其他流控制构造。
在括号内有一个关键字define是指令,在括号内有要执行的代码。
与可以让您自由使用声明内条件的if语句不同,只有三个可能的选项thicks,encoding和strict_type。
cks虫
在执行PHP脚本的过程中,正在执行多个语句,
该语句的大部分会引起滴答声,
使用declare(ticks = number)和相关函数register_tick_function(), 您可以在这些tick之间执行代码。
声明设置应传递多少条语句,而register_tick_function()指定在出现滴答的情况下应调用哪个函数。
这在循环或测试中可能很有用。
function hyphen(){
echo "-";
}
register_tick_function("hyphen");
$i = 0;
declare(ticks = 4) {
while ($i < 17)
echo "n"; ++$i;
}
// the previous code echoes: nnnn-nnnn-nnnn-nnnn如您所见,我刚刚创建了一个字符串,用作信用卡和借记卡的占位符。
很容易。
编码方式
另一个条件
在此,仅在编码与定义的编码对应的情况下才执行代码
declare(encoding='ISO-8859-1');
// code goes here
严格型
在可能的情况下,PHP将错误的类型赋值为期望的标量类型。
例如:
x = "10" + 10;
// x = 20;
PHP足够聪明,可以理解带有“ 10”的字符串应该是一个整数,并且可以对数字求和而没有任何问题。
现在,
在某些情况下,您不想丢失代码,而需要以更严格的方式进行管理。
在严格模式下,仅接受确切类型的变量,如果发生变量冲突,则将引发TypeError。
您可以通过以下方法定义所拥有的控制级别。
declare(strict_types=1);
请注意,上面的字符串必须是页面的第一条语句,紧接在PHP开头标签之后。
否则,您将遇到此错误//致命错误:strict_types声明必须是脚本中的第一条语句。
死亡并退出
这两个构造是别名, 它们在将消息返回到脚本时终止程序 。
好奇心:die构造是一种著名的技术,用于测试变量并在精确的行中停止程序代码,该技术称为dump and die。
如果您对Laravel之类的框架有任何经验,您可能会认为它是dd()。
如果您不这样做,这是您可以在2018年及以后在网上找到的PHP框架的最佳比较之一
这是在后台执行的代码:
die(var_dump($variable_to_test));
做,一会儿,一会儿
它们是在条件被验证的情况下执行的循环,我将在以下文章中详细解释它们。
订阅将在发布该帖子时收到通知。
回显并打印
将值输出到stdout(它是默认监视器或其他设备)。
我写这种教程的原因是帮助您成为更好的程序员,从而改善您的职业生涯。
那么echo和print有什么区别?
以上是作为Web开发人员在面试中最常问到的问题之一。
答案是,echo构造不返回任何值,而print构造将返回一个值,甚至为null,
这意味着您可以根据需要在表达式内使用print。
else,elseif,if,endif,switch,endswitch
他们都属于同一个家庭,
它们被用来创造条件,
敬请关注!
我将在以后的文章中详细介绍它们
空()
此构造根据使用参数的值返回布尔值。
请记住,空变量,空字符串或值为“ 0”的字符串,无值的数组,值为0的数字变量以及false都被视为空
endfor,endforeach,for,foreach
属于循环类别的其他构造。
eval()
这种结构允许执行作为参数给出的PHP代码,这非常危险,因为允许执行作为参数给出的PHP代码。
没有!,
你不仅有一个déjàvu,
我写了两次,因为我想让你理解这可能是有问题的。
PHP核心团队不鼓励使用它,但是如果您仍然选择使用它,则必须特别注意不要传递任何用户数据,尤其是在处理它之前不对其进行验证。
$string = 'dog';
$name = 'Tommy';
$str = 'My pet is a $animal and its name is $name';
echo $str. "\n";
// the previous line echoes: My pet is a $animal and its name is $name'. eval("\$str = \"$str\";");
echo $str. "\n";
// the previous line echoes: My pet is a dog and its name is Tommy'
去
不需要任何技能即可编写清晰,编写良好的代码并将其完全弄乱。
幸好,
如果这是您的目标,(真的吗?)PHP提供了完美的关键字来使用。
后藤由两部分组成,第一部分是标签,第二部分是目标,
此命令允许从标签跳转到另一个目标,从而跳过目标之间的每条语句。
使用goto时需要牢记一些规则。
标签和目标都必须在相同的上下文中,这意味着您不能在方法或函数内将代码目标化。
同时,您不能跳过调用范围之外目标的函数
包括,include_once,require,require_once
PHP的这四个构造具有相同的功能,但方式略有不同。
包含(如关键字所示)包含文件并对其进行评估,
include_once,此命令与上一个命令相似,但是PHP将确保仅一次包含该文件,
要求,看起来非常类似于包含,实际上,它还包含指示的文件并对其进行评估,但以强制方式进行,
require_once,包含一次相同,
必填项和包含项之间有一个主要区别,
如果找不到或无法读取该文件,它将停留在引发的错误上。
这两个include只会发出警告,而必需包含将产生致命错误,您将无法继续。
所以,
通常, 如果请求的文件很重要,并且脚本不能在没有我亲自使用的情况下继续运行,则需要您进行包含。
由于自动加载会自动加载脚本中指示的所有类,因此这些构造的使用越来越少。
这些是我在有关PHP中的面向对象编程的系列教程中介绍的更高级的功能
如果使用PHP框架,则会使用几种类型的设计模式自动请求所有文件,因此您无需担心。
实例
当您使用面向对象范例进行编码时,此构造很有用。
该构造函数的作用是返回一个布尔值,该值指示PHP变量是确定类的对象。
class Building { }
class School extends Building { }
$school = new School;
var_dump($school instanceof School);
// this will dump true
var_dump($school instanceof Building);
// this will also dump true because School is a child of Building代替
特质是一种OOP功能,用于解决类的单一继承的限制,
特质类似于类 ,通过使用特质,您可以实现新的行为并添加原本无法添加的功能。
使用特征时,您可能会遇到的问题是名称冲突,您需要使用具有相同名称的不同特征。
代替操作可用于选择您喜欢的特征。
trait def {
public function pass() {
echo 'low';
}
public function shot() {
echo 'high';
}
}
trait att {
public function pass() {
echo 'low';
}
public function shot() {
echo 'high';
}
}isset()
它检查是否已设置变量,如果肯定响应为假,则返回true;如果值不存在,则返回false。
if (isset($variable)) {
echo "$variable is set";
}list()
此构造接受一个数组和一个变量列表,并将数组的值立即分配给多个变量。
$sentence = array('fish', 'raw', 'bitter');
// Listing all the variables
list($dish, $temperature, $flavour) = $sentence;
echo "The $dish is $temperature and taste $flavour另外,请注意,您可以阅读有关7.3中与list()构造有关的一些非常有趣的新功能。
返回
return构造用于停止当前脚本,并在需要时提供您要获取的变量。
您可以在函数内部和全局范围内使用return。
如果在函数或方法中使用它,它将返回变量并返回到调用范围,如果在全局范围中使用它,则它将终止程序。
因此,可以在包含文件或必需文件中使用它。
unset()
这种语言构造将变量作为参数并将其销毁。
并非总是如此,实际上,当您“重置”变量时,您需要计算所处的范围。
实际上,如果销毁函数内部的变量,则该值在全局范围内仍然可用。
您可以使用上面刚刚解释的isset()构造检查变量是否存在。
$variable = 'this is a string';
unset($variable); echo $variable;
// the result of the echo will be NULL
注释
像大多数其他编程语言一样,即使在PHP中,注释也是该语言的基本组成部分。
创建注释的方法有三种,它们的来源来自较旧的语言。
- C样式它们是一行注释,并由符号#表示
- Perl样式它们也是一行注释,比上一个注释更常见,用符号//表示
- 多行注释这些组对多个行进行注释。 该块以/ *开头,以相反的* /结尾
还有一个主要用于API的外部标准,看起来像多行注释,但有所不同:
/ **这称为API注释
* /
结论
现在,您了解了所有这些信息,
对于专业的Web开发人员和初学者来说,风险之一就是非常善于使用某些功能,而忘记了其他功能,它们可能做同样的事情,但方式稍有不同,或者可能做了您需要学习的不同事情很久以前,但在不久的将来有必要,
我要你改变策略。
当然,这里有一些您不经常使用的结构,
我对吗?
好吧,现在您了解了更多有关它们的信息,
尝试逐步的方法在代码中实现它们,您会发现它们很容易进入您的军械库,并使您成为更好的程序员。
毕竟,这就是我们所有人真正想要的。
看看其他部分
PHP的复兴
如何使用变量(PHP 7)
有什么比开始练习新知识更好的了?
立即开始!
充分利用Blue Host的功能和速度,创建一个帐户,您可以在每月不超过星巴克Caffe Mocha的实时服务器上进行锻炼并查看改进情况。
From: https://hackernoon.com/construct-and-comments-of-php-7-7f3462499654
