写给Javaer看的PHP入门引导
  xu42 2020年12月10日 292 0
php

日常工作都在用 Java 了,需要懂一点PHP么?

  1. 创世应用,是用PHP写的哟,了解下背景,也许用的上
  2. 工作之余,写点小玩意儿,也许用的上

以下仅讨论Web开发领域

语言只是一个工具

语法篇

PHP作为一门弱类型、解释执行的服务器脚本语言,类似于C,上手快。

   
<?php // 标记php语言 // ' 与 '' 均可 echo 'php is the best language'; /* 长段可换行注释 */ echo "hello, world!"; // 可以无结束符号

常量

   
define("HELLO", "hello,world!"); const HELLO = "hello,world!";

变量

弱类型,无需声明变量类型

   
// int / integer $var = 1; // bool / boolean $var = true; // float / double $var = 1.1; // string $var = 'hello,world!'; // array $var = [1, 1.1, 'hello,world!']; // 不支持 map set list // 万物皆array $var = ['id' => 1, 'name' => 'xu42', 'age' => 18, 'extension' => ['school' => 'known']]; // NULL $var = null; $var = NULL; // object class foo { function hello() { echo "Hello."; } } $bar = new foo; //or $bar = new foo(); // callback class MyClass { public static function myCallbackMethod() { echo 'Hello World!'; } } call_user_func(array('MyClass', 'myCallbackMethod'));

方法

   
class Hello { public function process($first) { echo 'first'; } // 这是非法的,不允许存在同名方法 public function process($first, $two) { echo 'first'; } // 通过 }

异常

通过 error_reporting() 方法来声明报错等级。

通过 set_exception_handler() 方法来注册自定义的全局异常处理方法。

Fatal Error

致命错误,直接影响运行时,程序中断运行。一般是语法错误、资源问题等。

Throwable

基类

Error 错误

PHP内部错误类的基类

计算、断言、解析、类型等

Exception 异常

运行时(栈溢出、越界、数据库连接)、反射等

框架篇

相较于 Spring 全家桶 一统 Java 框架,PHP的框架是百花齐放。

YafSwooleZanPHPSlimCodeigniterSymfonyYii2LaravelThinkPHP

img

组件篇

如何使用组件/三方包

PHP组件使用 composer 类似于 Java 的 maven

各组件通过命名空间来区分

   
// 在项目目录下执行命令 引入一个三方包,也可以直接编辑composer.json文件进行添加、更新或删除操作 composer require 'xu42/china-same-name' // 更新三方包 composer update

如何写一个组件

这里通过引入一个三方包,来做一个同名查询的服务。

本地执行

   
php bin.php 张伟
   
<?php $name = implode(' ', array_slice($argv, 1)); $name = empty($name) ? '张伟' : $name; echo "你要查询{$name}的同名人数" . PHP_EOL; include 'vendor/autoload.php'; $count = \Xu42\ChinaSameName\ChinaSameName::count($name, 'henan'); echo "\t河南:" . $count . PHP_EOL; $count = \Xu42\ChinaSameName\ChinaSameName::count($name, 'henan.pingdingshan'); echo "\t河南平顶山:" . $count . PHP_EOL; $count = \Xu42\ChinaSameName\ChinaSameName::count($name, 'zhejiang'); echo "\t浙江:" . $count . PHP_EOL; $count = \Xu42\ChinaSameName\ChinaSameName::count($name, 'zhejiang.hangzhou'); echo "\t浙江杭州:" . $count . PHP_EOL;

HTTP 服务

   
curl "http://127.0.0.1:8000/api.php?name=张伟&area=henan"
   
<?php error_reporting(0); $name = $_GET["name"]; $name = empty($name) ? '张伟' : $name; $area = $_GET["area"]; $area = empty($area) ? 'henan' : $area; include 'vendor/autoload.php'; echo json_encode([ 'count' => \Xu42\ChinaSameName\ChinaSameName::count($name, $area) ]);

实战篇

写一个PHP组件 - 一个小爬虫 - 跟你重名有几人?

源码奉上:https://github.com/xu42/china-same-name

最后一次编辑于 2021年03月11日 1

暂无评论

xu42
作者其他文章 更多