被迫入门PHP,真香!

2023-10-25 12:34:28 浏览数 (1)

每次回村,家里老人问起,你学啥专业?我说计算机,大家大概率就认为我是修电脑的了~~~~~~

虽然目前市面上php开发工程师不多,但是很多公司老项目还有保留php。这里也更一下php方向/路线/系列,希望对入门php或者是转php语言有所帮助。

PHP是什么

PHP是一种电脑语言:就像人们之间用不同的语言进行沟通一样,有中文,英语嘛。那么计算机之间也需要一种特殊的语言来进行交流。PHP就是一种计算机语言,但它的目的是用来构建互联网上的网页。

背景

最近入职的公司后端语言主要用golang和php,之前写Java比较多(java学了三年没学会)springboot,springcloud那一套,一下子接触php也是觉得怪怪的,看php文档,学了两周基础和框架:php基础,laravel、lumen、thinkphp框架等。然后硬着头皮上手开发了。

这里就挑一些与Java、golang等区别(坑)记录一下。系统学习的话,建议大家还是以官方文档为主

面向人群

  1. 其他语言转PHP:一家公司用什么语言,你就得会什么语言,一成不变的东西很少有,我们要做的是拥抱语言,拥抱技术,拥抱变化。
  2. 初学者:php基础主要针对那些没有或只有少量编程经验的人。了解PHP的基本概念、语法和常见用法,以帮助新手入门编程世界。
  3. Web开发初学者:许多选择学习PHP作为他们进入Web开发领域的起点。了解php的方向和了解如何创建动态网页和Web应用程序。
  4. 自学者:许多人选择通过自学来掌握编程技能,而PHP基础文章可以作为自学的起点,帮助他们建立坚实的编程基础。
  5. 非科班转码:有时,非计算机科学背景的人员需要使用PHP来完成特定的任务或项目。此文章可以帮助他们快速了解PHP的基础知识。

Java与PHP的区别(了解):

  1. 定位和用途。java是面向对象编程语言,包括但不限于电商,银行等;php是脚本语言,用于web应用程序开发;
  2. 语法和编程风格,java语法比较严谨,php语法比较灵活,支持混合编码;
  3. 社区和生态环境,java有众多的框架和库,php有大量的扩展库和框架;
  4. 性能和扩展性,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差不多,

  1. Java的数据类型:byteshortintlongfloatdoublecharboolean
  2. Java还有引用数据类型:类(Class),接口(Interface),数组(Array),枚举(Enum),字符串(String)

php用的数组比较多,而且php提供了很多数组api,直接使用即可。

PHP 类型比较(重要)

官方文档:

  1. https://www.php.net/manual/zh/language.operators.comparison.php
  2. 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.
?>

  1. 首先定义了一个Person类,该类有两个属性name和age,以及一个构造函数__construct用于初始化属性。
  2. 构造函数接受两个参数,并将它们分别分配给对象的属性。
  3. 类中还定义了一个greet方法,用于输出一个问候语,引用了对象的属性。
  4. 然后,创建了一个$person1对象,使用new关键字实例化Person类,并传递姓名和年龄作为构造函数的参数。
  5. 最后,访问了对象的属性和调用了对象的方法。

这个示例演示了如何创建和使用PHP面向对象编程中的类和对象。

总结

这里简单列举了php常用的场景和区别。还有其他if...else,循环switch,运算符等等区别真不大。重点可能在于,对数组和字符串的使用。

具体详细的,更推荐大家可以到官网阅读。

日常开发满足对框架的使用,重点是对php数组和字符串,其他就是php框架了。还有就是sql的编写,这方面php框架也封装了对sql的操作。特别是对sql注入的处理等等。基本上,熟悉原生sql的编写,再按照php框架官方文档刷一下,还是可以很快上手。

ok,下篇介绍php的框架laravel,相当于Java里面的spring地位。

参考链接:

  1. 菜鸟教程:https://www.runoob.com/php/php-oop.html
  2. https://www.php.cn/faq/582584.html
  3. PHP官网-字符串 函数:https://www.php.net/manual/zh/ref.strings.php
  4. PHP官网-PHP常用数组:https://www.php.net/manual/zh/ref.array.php

0 人点赞