每次回村,家里老人问起,你学啥专业?我说计算机,大家大概率就认为我是修电脑的了~~~~~~
虽然目前市面上php开发工程师不多,但是很多公司老项目还有保留php。这里也更一下php方向/路线/系列
,希望对入门php或者是转php语言有所帮助。
PHP是什么
PHP是一种电脑语言:就像人们之间用不同的语言进行沟通一样,有中文,英语嘛。那么计算机之间也需要一种特殊的语言来进行交流。PHP就是一种计算机语言,但它的目的是用来构建互联网上的网页。
背景
最近入职的公司后端语言主要用golang和php,之前写Java比较多(java学了三年没学会)springboot,springcloud那一套,一下子接触php也是觉得怪怪的,看php文档,学了两周基础和框架:php基础,laravel、lumen、thinkphp框架等。然后硬着头皮上手开发了。
这里就挑一些与Java、golang等区别(坑)记录一下。系统学习的话,建议大家还是以官方文档为主
。
面向人群
- 其他语言转PHP:一家公司用什么语言,你就得会什么语言,一成不变的东西很少有,我们要做的是拥抱语言,拥抱技术,拥抱变化。
- 初学者:php基础主要针对那些没有或只有少量编程经验的人。了解PHP的基本概念、语法和常见用法,以帮助新手入门编程世界。
- Web开发初学者:许多选择学习PHP作为他们进入Web开发领域的起点。了解php的方向和了解如何创建动态网页和Web应用程序。
- 自学者:许多人选择通过自学来掌握编程技能,而PHP基础文章可以作为自学的起点,帮助他们建立坚实的编程基础。
- 非科班转码:有时,非计算机科学背景的人员需要使用PHP来完成特定的任务或项目。此文章可以帮助他们快速了解PHP的基础知识。
Java与PHP的区别(了解):
- 定位和用途。java是面向对象编程语言,包括但不限于电商,银行等;php是脚本语言,用于web应用程序开发;
- 语法和编程风格,java语法比较严谨,php语法比较灵活,支持混合编码;
- 社区和生态环境,java有众多的框架和库,php有大量的扩展库和框架;
- 性能和扩展性,java的性能比php要高一些,开发时间和成本较高(从Java基础-spring-springboot那一套),php开发速度快。写起Java来说,用集合比较多,像什么hashmap,hashset。数组arrayList等等。php对数组用的比较多。而且内部api函数也特别多。总体下来,php开发确实快,不愧是:PHP是世界上最好的语言。
环境安装
环境安装和Java,go等差不多。对应版本不太好找,官网最新是8点几。目前市面上用7.4比较多 对应的下载安装就完事了。
- php各版本:https://windows.php.net/downloads/releases/archives/
- 安装教程:自行百度
hello world
写php用VScode,PhpStorm都行。写完之后浏览器运行就出来了。
代码语言:javascript复制<?php
echo "Hello World!";
?>
PHP注释(与go,Java等差不多)
代码语言:javascript复制<?php
// 这是 PHP 单行注释
/**
* 这是 PHP 多行注释
*/
?>
PHP 变量
php变量和其他语言差别,php直接用 $ 表示就行,有点类似golang
代码语言:javascript复制<?php
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>
PHP 变量作用域
PHP 有四种不同的变量作用域:local、global、static、parameter
PHP global 关键字
global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,需要在变量前加上 global 关键字:
代码语言:javascript复制<?php
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x $y;
}
myTest();
echo $y; // 输出 15
?>
PHP echo 和 print 语句
echo 和 print 区别:
- echo - 可以输出一个或多个字符串
- print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
demo
代码语言:javascript复制<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
?>
<?php
$txt1 = "学习 PHP";
$txt2 = "nateshao.com";
$cars = array("Volvo", "BMW", "Toyota");
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>
<?php
print "<h2>PHP 很有趣!</h2>";
print "Hello world!<br>";
print "我要学习 PHP!";
?>
<?php
print "<br>";
$txt1 = "学习 PHP";
$txt2 = "nateshao.com";
$cars = array("Volvo", "BMW", "Toyota");
print $txt1;
print "<br>";
print "在 $txt2 学习 PHP ";
print "<br>";
print "我车的品牌是 {$cars[1]}";
?>
PHP数据类型
PHP 支持以下几种数据类型:
String | Integer | Float | Boolean | Array | Object | NULL | Resource |
---|---|---|---|---|---|---|---|
字符串 | 整型 | 浮点型 | 布尔型 | 数组 | 对象 | 空值 | 资源类型 |
整体和Java差不多,
- Java的数据类型:
byte
,short
,int
,long
,float
,double
,char
,boolean
- Java还有引用数据类型:类(Class),接口(Interface),数组(Array),枚举(Enum),字符串(String)
php用的数组比较多,而且php提供了很多数组api,直接使用即可。
PHP 类型比较(重要)
官方文档:
- https://www.php.net/manual/zh/language.operators.comparison.php
- https://www.php.net/manual/zh/types.comparisons.php
松散比较 ==
严格比较 ===
==
和===
- 两个等号 == 比较,只比较值,不比较类型。
- 三个等号 === 比较,除了比较值,也比较类型。
"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。
代码语言:javascript复制<?php
if(42 == "42") {
echo '1、值相等';
}
echo PHP_EOL; // 换行符
if(42 === "42") {
echo '2、类型相等';
} else {
echo '3、类型不相等';
}
?>
------------
1、值相等
3、类型不相等
好比于Java的==和equals()有什么区别了(八股文)
PHP 字符串变量和字符串函数
无论是Java,golang语言,对字符串的处理,使用还是比较多的。
explode
:使用一个字符串分割另一个字符串implode
:用字符串连接数组元素
str_contains
:确定字符串是否包含指定子串str_repeat
:重复一个字符串str_replace
:子字符串替换strlen
:获取字符串长度trim
:去除字符串首尾处的空白字符(或者其他字符)
PHP常用数组
- array_column:返回输入数组中指定列的值
- array_count_values:统计数组中每个不同值的出现次数
- array_diff:计算数组的差集
- count:统计数组、Countable 对象中所有元素的数量
- in_array:检查数组中是否存在某个值
- array_values:返回数组中所有的值
- array_unique:移除数组中重复的值
- array_filter:使用回调函数过滤数组的元素
- array_key_exists:检查数组里是否有指定的键名或索引
- array_keys:返回数组中部分的或所有的键名
- array_map:为数组的每个元素应用回调函数
- array_merge:合并一个或多个数组
- array_replace:使用传递的数组替换第一个数组的元素
- array_reverse:返回单元顺序相反的数组
- array_search:在数组中搜索给定的值,如果成功则返回首个相应的键名
PHP for循环
循环和其他语言差不多,写的简单例子就好了
代码语言:javascript复制<?php
$lists = [
1 => "千羽",
2 => "詹姆斯",
3 => "凯里"
];
foreach ($x as $key => $value)
{
echo "key 为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
}
?>
输出:
key 为 1,对应的 value 为 千羽
key 为 2,对应的 value 为 詹姆斯
key 为 3,对应的 value 为 凯里
PHP 命名空间(namespace)
代码语言:javascript复制namespace AppHttpControllersFactory; // 定义:
use MyNamespaceMyClass; // 使用:
$obj = new MyNamespaceMyClass(); // 类和函数访问:
Java的导包
代码语言:javascript复制import com.example.MyClass; // 导包声明:
com.example.MyClass obj = new com.example.MyClass(); // 创建
PHP 面向对象
面向对象在Java也有,相信大家应该都知道,三个特性是:继承,封装,多态。
在PHP中,面向对象编程允许创建类和对象,这些类定义了对象的属性(成员变量)和方法(成员函数),并提供了一种更模块化、可维护和可扩展的代码组织方式。(好抽象)
写的demo,可能就明白了
代码语言:javascript复制<?php
// 定义一个Person类
class Person {
// 类的属性
public $name;
public $age;
// 构造函数
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
// 类的方法
public function greet() {
echo "Hello, my name is " . $this->name . " and I am " . $this->age . " years old.";
}
}
// 创建Person对象
$person1 = new Person("千羽", 21);
// 访问对象的属性和调用方法
echo $person1->name; // 输出: 千羽
echo $person1->age; // 输出: 21
$person1->greet(); // 输出: Hello, my name is 千羽 and I am 21 years old.
?>
- 首先定义了一个Person类,该类有两个属性name和age,以及一个构造函数__construct用于初始化属性。
- 构造函数接受两个参数,并将它们分别分配给对象的属性。
- 类中还定义了一个
greet
方法,用于输出一个问候语,引用了对象的属性。 - 然后,创建了一个
$person1
对象,使用new
关键字实例化Person
类,并传递姓名和年龄作为构造函数的参数。 - 最后,访问了对象的属性和调用了对象的方法。
这个示例演示了如何创建和使用PHP面向对象编程中的类和对象。
总结
这里简单列举了php常用的场景和区别。还有其他if...else,循环switch,运算符等等区别真不大。重点可能在于,对数组和字符串的使用。
具体详细的,更推荐大家可以到官网阅读。
日常开发满足对框架的使用,重点是对php数组和字符串,其他就是php框架了。还有就是sql的编写,这方面php框架也封装了对sql的操作。特别是对sql注入的处理等等。基本上,熟悉原生sql的编写,再按照php框架官方文档刷一下,还是可以很快上手。
ok,下篇介绍php的框架laravel,相当于Java里面的spring地位。
参考链接:
- 菜鸟教程:https://www.runoob.com/php/php-oop.html
- https://www.php.cn/faq/582584.html
- PHP官网-字符串 函数:https://www.php.net/manual/zh/ref.strings.php
- PHP官网-PHP常用数组:https://www.php.net/manual/zh/ref.array.php