面向 JavaScript 开发人员的 PHP
句法
标准
声明变量
声明数组
功能
课程
我从 2012 年开始学习 HTML 和 CSS 编程。自从踏上编程之旅以来,PHP 一直是我梦寐以求的语言之一。它无处不在。然而,回想 2012 年,作为一个刚毕业的高中生,我感觉自己完全力不从心。如果你感兴趣的话,可以在这里了解更多关于我的编程历程。
作为一名刚从 JavaScript 训练营毕业的学生,我决定重新尝试学习 PHP。一直以来,要找到一些不针对从未接触过任何代码的人的 PHP 资源都相当困难。所以,我写了这篇文章。我希望能够帮助其他像我一样需要快速了解他们所选语言和想要学习的语言之间区别的人。
通用语法
PHP 语法和 JavaScript 最大的区别之一在于,PHP 的行尾必须使用分号。我一开始就为此困扰了很久——现在有时仍然如此——所以我想在这里首先强调这一点。
使用语言
在 JavaScript 中,除了确保文件具有扩展名之外,您无需执行任何特殊操作即可运行代码.js
。然而,在 PHP 中,即使在指定了扩展名的文件中,您也需要使用标签.php
。
<?php
# code here
?>
声明变量
在 PHP 中创建变量非常简单。与 JavaScript 类似,PHP 是一种动态类型语言,因此创建变量时无需声明其类型。它使用$
符号来表示变量。
$myvar = 'value';
默认情况下,在 PHP 中,任何声明的变量都是可变的。它可以在任何地方被更改。
声明常量
PHP 有一个特殊函数,名为 ,define
用于创建不可更改的变量。它接受两个参数:变量名称和要赋给它的值。默认情况下,此函数会将您创建的变量名称设置为区分大小写。您可以通过将true
第三个参数传递给函数来覆盖此设置。
define('CONSTANT_NAME', value, true);
声明数组
与 JavaScript 数组类似,PHP 中的数组可以使用标准括号表示法或函数创建。不过,PHP 的关联数组相当于 JavaScript 对象,并且是在 PHP 中创建键/值对集合的唯一方法,无需导入任何模块。在 PHP 中,将值赋给键用 表示=>
。
$myArray = ['key1' => 'value', 'key2' => 'value', 'key3' => 'value'];
函数
PHP 中的函数与 JavaScript(特别是 ES5)非常相似。
function myFunc($param) {
return $param;
}
在这方面,我发现这两种语言之间唯一真正的区别是,PHP 有一个运算符,它可以将传入的参数从基于值的参数更改为引用的参数:&
。
$myVar = 10;
echo $myVar; # displays 10
function addTen(&$param) {
return $param += 10;
}
addTen($myVar);
echo $myVar; # displays 20
循环
与函数类似,循环的编写方式与 JavaScript 的编写方式并无太大区别。PHP 的foreach
循环是一个例外,它会根据循环的数组类型而变化。
法线数组:
foreach($arrayName as $item) {
# do code
}
关联数组:
foreach($myArray as $key => $value) {
# do code
}
类和 OOP 方法
类是 PHP 与 JavaScript 的一个显著区别。虽然 PHP 最初并非面向对象编程语言(与 JavaScript 类似),但其功能是后来添加的。
访问修饰符关键字
在标准 JS 中,类不需要修饰符关键字。然而,在 PHP 中,需要修饰符关键字。
PHP 中的修饰符有:
public
- 这可以在课堂之外使用,可以通过脚本或其他课程使用。private
- 创建此对象的类是唯一可以访问它的类。protected
- 仅当在该类所属的子类中调用它时,才可以在类外部访问它。static
- 允许使用属性或方法,而无需实例化该属性或方法所属的类。
在 PHP 中创建类时,最佳做法是利用这些关键字来告诉类需要对类的属性和方法做什么。
class MyClass {
private $classAttrib;
public function __construct($classAttrib) {
this->classAttrib = $classAttrib;
}
}
您会注意到上述代码片段中的一些细节。首先可能是两个修饰关键字。在这里,我们声明了一个名为 的私有变量,classAttrib
它只能通过 访问MyClass
。其次是 public 关键字,我们将其与 PHP 的内置方法结合使用__construct
。这使我们能够像实例化函数一样实例化一个类,就像在 JavaScript 中一样。
$myClass = new MyClass(someValue);
这和箭
继续MyClass
上面的例子,你会注意到我们使用的this
方式和 JavaScript 中一样。区别在于,我们使用箭头 ( ->
) 来访问classAttrib
类。我们还会使用这个指针来访问类中我们需要在整个代码中使用的任何内容。
这是 JavaScript 中的同一个类:
class MyClass {
constructor(classAttrib) {
this.classAttrib = classAttrib;
}
}
Getters 和 Setters
Getters 和 Setters 是用于获取和设置(或更新)与类属性相关的信息的类方法。在 JavaScript 中,我们通常不需要创建它们,同样在 PHP 中也不需要它们。话虽如此,在 PHP 中你会更频繁地看到它们,所以我认为在这里稍微介绍一下是比较明智的。基本上,这些方法是唯一应该在类之外直接修改或以其他方式与类属性交互的方法。
# ... inside MyClass
public function setClassAttrib($classAttrib) {
return $this->classAttrib = $classAttrib;
}
public function getClassAttrib() {
return $this->classAttrib;
}
继承
在 PHP 中从父类继承与 JavaScript 类似,不同之处在于我们不使用super
来传递父类的属性。而是使用::
运算符。该运算符也称为作用域解析运算符。
class SecondClass extends MyClass {
private $newAttrib;
public function __construct($classAttrib, $newAttrib) {
parent::__construct($classAttrib);
this->newAttrib = $newAttrib;
}
}
PHP 和 JavaScript 的相似之处
现在我们已经讨论了 JavaScript 和 PHP 之间的一些差异,让我们来讨论一下它们的一些相似之处!
- PHP 拥有扩展语法!你可以在参数(PHP 5.6+ 版本支持参数解包)和数组(PHP 7.4+ 版本支持)中使用与 JavaScript 完全相同的语法!
- PHP 有三元运算符!
- PHP 具有类型强制
==
!
正如我之前提到的,我对 PHP 还不熟悉,但我希望这篇文章对你有所帮助!❤️
文章来源:https://dev.to/smoldev/php-for-javascript-developers-5ff8