作为一个PHP开发者,现在是一个令人激动的时刻。每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库。下面是我曾经遇到过最酷的24个库。你最喜欢的库没有在这个列表里面?那就在评论中分享吧!1. Dispatch – 微框架Dispatch是一个PHP小框架。它并没有给你完整的MVC设置,但你可以定义URL规则和方法,以便更好组织应用程序。这对API、简单的站点或原型来说是完美的。
//包含库
include 'dispatch.php';
// 定义你的路由
get('/greet', function () {
//渲染视图
render('greet-form');
});
//post处理
post('/greet', function () {
$name = from($_POST, 'name');
// render a view while passing some locals
render('greet-show', array('name' => $name));
});
// serve your site
dispatch();
你可以匹配特定类型的HTTP请求和路径,渲染视图或做更多事情。如果你合并Dispatch和其他框架,那你就可以拥有一个相当强大并且轻量级的程序!2. Klein – PHP快如闪电的路由Klein是另一款针对PHP5.3+版本的轻量级路由库。虽然它有一些比Dispatch冗长的语法,但它相当快。这有一个例子:
respond('/[:name]', function ($request) {
echo 'Hello ' . $request->name;
});
你也可以定制来指定HTTP方法和使用正则表达式作为路径。
respond('GET', '/posts', $callback);
respond('POST', '/posts/create', $callback);
respond('PUT', '/posts/[i:id]', $callback);
respond('DELETE', '/posts/[i:id]', $callback);
//匹配多种请求方法:
respond(array('POST','GET'), $route, $callback);
//你或许也想在相同的地方处理请求
respond('/posts/[create|edit:action] /[i:id] ', function ($request, $response) {
switch ($request->action) {
// do something
}
});
对于小型项目来说这是很棒的,但当你把一个像这样的库用于大型应用时,你不得不遵守规矩,因为你的代码可能很快就变得不可维护。所以你最好搭配一个像Laravel或者CodeIgniter这样完全成熟的框架。3. Ham – 带缓存的路由库Ham也是一款轻量级的路由框架,但是它利用缓存甚至获得了更快的速度。它通过把任何I/O相关的东西缓存进XCache/APC。下面是一个例子:
require '../ham/ham.php';
$app = new Ham('example');
$app->config_from_file('settings.php');
$app->route('/pork', function($app) {
return "Delicious pork.";
});
$hello = function($app, $name='world') {
return $app->render('hello.html', array(
'name' => $name
));
};
$app->route('/hello/<string>', $hello);
$app->route('/', $hello);
$app->run();
这个库要求你至少安装了XCache和APC其中的一个,这可能意味着,在大多数主机提供商提供的主机上它可能用不了。但是如果你拥有一个安装它们其一的主机,或者你可以操控你的web服务器,你应该尝试这款最快的框架。4. Assetic – 资源管理Assetic是一个PHP的资源管理框架,用于合并和减小了CSS/JS资源。下面是例子。
use Assetic\Asset\AssetCollection;
use Assetic\Asset\FileAsset;
use Assetic\Asset\GlobAsset;
$js = new AssetCollection(array(
new GlobAsset('/path/to/js/*'),
new FileAsset('/path/to/another.js'),
));
//当资源被输出时,代码会被合并
echo $js->dump();
以这种方式合并资源是一个好主意,因为它可以加速站点。不仅仅总下载量减小了,也消除了大量不必要的HTTP请求(这是最影响页面加载时间的两件事)5. ImageWorkshop – 带层的图片处理ImageWorkshop是一个让你操控带层图片的开源库。借助它你可以重定义尺寸、裁剪、制作缩略图、打水印或做更多事情。下面是一个例子:
// 从norway.jpg图片初始化norway层
$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg');
// 从watermark.png图片初始化watermark层(水印层)
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png');
$image = $norwayLayer->getResult(); // 这是生成的图片!
header('Content-type: image/jpeg');
imagejpeg($image, null, 95); // We choose to show a JPG with a quality of 95%
exit;
ImageWorkshop被开发用于使一些PHP中最通用的处理图片的案例简化,如果你需要一些更强大的东西,你应该看下Imagine library!6. Snappy – 快照/PDF库Snappy是一个PHP5库,可以生成快照、URL、HTML、PDF。它依赖于wkhtmltopdf binary(在Linux,Windows和OSX上都可用)。你可以像这样使用它们:
require_once '/path/to/snappy/src/autoload.php';
use Knp\Snappy\Pdf;
//通过wkhtmltopdf binary路径初始化库
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
//通过把Content-type头设置为pdf来在浏览器中展示pdf
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $snappy->getOutput('http://www.github.com');
要记得,你的主机提供商可能不允许调用外部二进制程序。7. Idiorm – 轻量级ORM库Idiorm是个人之前在本网站教程中用过最喜爱的一款。它是一款轻量级的ORM库,一个建立在PDO之上的PHP5查询构造器。借助它,你可以忘记如何书写乏味的SQL:
$user = ORM::for_table('user')
->where_equal('username', 'j4mie')
->find_one();
$user->first_name = 'Jamie';
$user->save();
$tweets = ORM::for_table('tweet')
->select('tweet.*')
->join('user', array(
'user.id', '=', 'tweet.user_id'
))
->where_equal('user.username', 'j4mie')
->find_many();
foreach ($tweets as $tweet) {
echo $tweet->text;
}
Idiorm有一个姊妹库叫Paris,Paris是一个基于Idiorm的Active Record实现。8. Underscore – PHP的工具腰带Underscore是原始Underscore.js的一个接口 – Javascript应用的工具腰带。PHP版本没有让人失望,而且支持了几乎所有原生功能。下面是一些例子:
__::each(array(1, 2, 3), function($num) { echo $num . ','; }); // 1,2,3,
$multiplier = 2;
__::each(array(1, 2, 3), function($num, $index) use ($multiplier) {
echo $index . '=' . ($num * $multiplier) . ',';
});
// prints: 0=2,1=4,2=6,
__::reduce(array(1, 2, 3), function($memo, $num) { return $memo + $num; }, 0); // 6
__::find(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // 2
__::filter(array(1, 2, 3, 4), function($num) { return $num % 2 === 0; }); // array(2, 4)
这个库也支持链式语法,这使得它更为强大。9. Requests – 简单HTTP请求Requests是一个简化HTTP请求的库。如果你和我一样,几乎从来都记不住传递给Curl的各种各样的参数,那么它就是为你准备的:
$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);
var_dump($request->status_code);
// int(200)
var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"
var_dump($request->body);
// string(26891) "[…]"
借助这个库,你可以发送HEAD、GET、POST、PUT、DELTE和PATCH HTTP请求,你可以通过数组添加文件和参数,并且可以访问所有相应数据。10. Buzz – 简单的HTTP请求库Buzz是另一个完成HTTP请求的库。下面是一个例子:
$request = new Buzz\Message\Request('HEAD', '/', 'http://google.com');
$response = new Buzz\Message\Response();
$client = new Buzz\Client\FileGetContents();
$client->send($request, $response);
echo $request;
echo $response;
因为它缺乏文档,所以你不得不阅读源码来获知它支持的所有参数。11. Goutte – Web抓取库Goutte是一个抓取网站和提取数据的库。它提供了一个优雅的API,这使得从远程页面上选择特定元素变得简单。
require_once '/path/to/goutte.phar';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony-project.org/');
//点击链接
$link = $crawler->selectLink('Plugins')->link();
$crawler = $client->click($link);
//使用一个类CSS语法提取数据
$t = $crawler->filter('#data')->text();
echo "Here is the text: $t";
12. Carbon – DateTime 库Carbon 是 DateTime API 的一个简单扩展。
printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
$nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4);
$officialDate = Carbon::now()->toRFC2822String();
$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
$endOfWorld = Carbon::createFromDate(2012, 12, 21, 'GMT');
//总是以UTC对比
if (Carbon::now()->gte($endOfWorld)) {
die();
}
if (Carbon::now()->isWeekend()) {
echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2分钟之前'
13. Ubench – 微型基准库Ubench 是一个用于评测PHP代码的微型库,可监控(代码)执行时间和内存使用率。下面是范例:
use Ubench\Ubench;
$bench = new Ubench;
$bench->start();
//执行一些代码
$bench->end();
//获取执行消耗时间和内存
echo $bench->getTime(); // 156ms or 1.123s
echo $bench->getTime(true); // elapsed microtime in float
echo $bench->getTime(false, '%d%s'); // 156ms or 1s
echo $bench->getMemoryPeak(); // 152B or 90.00Kb or 15.23Mb
echo $bench->getMemoryPeak(true); // memory peak in bytes 内存峰值
echo $bench->getMemoryPeak(false, '%.3f%s'); // 152B or 90.152Kb or 15.234Mb
//在结束标识处返回内存使用情况
echo $bench->getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb
(仅)在开发时运行这些校验是一个好主意。14. Validation – 输入验证引擎Validation 声称是PHP库里最强大的验证引擎。但是,它能名副其实吗?看下面:
use Respect\Validation\Validator as v;
//简单验证
$number = 123;
v::numeric()->validate($number); //true
//链式验证
$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate('alganet'); //true
//验证对象属性
$user = new stdClass;
$user->name = 'Alexandre';
$user->birthdate = '1987-07-01';
//在一个简单链中验证他的属性
$userValidator = v::attribute('name', v::string()->length(1,32))
->attribute('birthdate', v::date()->minimumAge(18));
$userValidator->validate($user); //true
你可以通过这个库验证你的表单或其他用户提交的数据。除此之外,它内置了很多校验,抛出异常和定制错误信息。15. Filterus – 过滤库Filterus是另一个过滤库,但它不仅仅可以验证,也可以过滤匹配预设模式的输出。下面是一个例子:
$f = Filter::factory('string,max:5');
$str = 'This is a test string';
$f->validate($str); // false
$f->filter($str); // 'This '
Filterus有很多内建模式,支持链式用法,甚至可以用独立的验证规则去验证数组元素。16. Faker – 假数据生成器Faker 是一个为你生成假数据的PHP库。当你需要填充一个测试数据库,或为你的web应用生成测试数据时,它能派上用场。它也非常容易使用:
//引用Faker 自动加载器
require_once '/path/to/Faker/src/autoload.php';
//使用工厂创建来创建一个Faker\Generator实例
$faker = Faker\Factory::create();
//通过访问属性生成假数据
echo $faker->name; // 'Lucy Cechtelar';
echo $faker->address;
// "426 Jordy Lodge
// Cartwrightshire, SC 88120-6700"
echo $faker->text;
// Sint velit eveniet. Rerum atque repellat voluptatem quia ...
只要你继续访问对象属性,它将继续返回随机生成的数据。17. Mustache.php – 优雅模板库Mustache是一款流行的模板语言,实际已经在各种编程语言中得到实现。使用它,你可以在客户端或服务段重用模板。 正如你猜得那样,Mustache.php 是使用PHP实现的。
$m = new Mustache_Engine;
echo $m->render('Hello {{planet}}', array('planet' => 'World!')); // "Hello World!"
建议看一下官方网站Mustache docs 查看更多高级的例子。18. Gaufrette – 文件系统抽象层Gaufrette是一个PHP5库,提供了一个文件系统的抽象层。它使得以相同方式操控本地文件,FTP服务器,亚马逊 S3或更多操作变为可能。它允许你开发程序时,不用了解未来你将怎么访问你的文件。
use Gaufrette\Filesystem;
use Gaufrette\Adapter\Ftp as FtpAdapter;
use Gaufrette\Adapter\Local as LocalAdapter;
//本地文件:
$adapter = new LocalAdapter('/var/media');
//可选地使用一个FTP适配器
// $ftp = new FtpAdapter($path, $host, $username, $password, $port);
//初始化文件系统
$filesystem = new Filesystem($adapter);
//使用它
$content = $filesystem->read('myFile');
$content = 'Hello I am the new content';
$filesystem->write('myFile', $content);
也有缓存和内存适配器,并且随后将会增加更多适配器。19. Omnipay – 支付处理库Omnipay是一个PHP支付处理库。它有一个清晰一致的API,并且支持数十个网关。使用这个库,你仅仅需要学习一个API和处理各种各样的支付处理器。下面是一个例子:
use Omnipay\CreditCard;
use Omnipay\GatewayFactory;
$gateway = GatewayFactory::create('Stripe');
$gateway->setApiKey('abc123');
$formData = ['number' => '4111111111111111', 'expiryMonth' => 6, 'expiryYear' => 2016];
$response = $gateway->purchase(['amount' => 1000, 'card' => $formData]);
if ($response->isSuccessful()) {
//支付成功:更新数据库
print_r($response);
} elseif ($response->isRedirect()) {
//跳转到异地支付网关
$response->redirect();
} else {
//支付失败:向客户显示信息
exit($response->getMessage());
}
使用相同一致的API,可以很容易地支持多种支付处理器,或在需要时进行切换。20. Upload – 处理文件上传Upload是一个简化文件上传和验证的库。上传表单时,这个库会校验文件类型和尺寸。
$storage = new \Upload\Storage\FileSystem('/path/to/directory');
$file = new \Upload\File('foo', $storage);
//验证文件上传
$file->addValidations(array(
//确保文件类型是"image/png"
new \Upload\Validation\Mimetype('image/png'),
//确保文件不超过5M(使用"B","K","M"或者"G")
new \Upload\Validation\Size('5M')
));
//试图上传文件
try {
//成功
$file->upload();
} catch (\Exception $e) {
//失败!
$errors = $file->getErrors();
}
它将减少不少乏味的代码。21. HTMLPurifier – HTML XSS 防护HTMLPurifier是一个HTML过滤库,通过强大的白名单和聚集分析,保护你代码远离XSS攻击。它也确保输出标记符合标准。 (源码在github上)
require_once '/path/to/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
如果你的网站允许用户提交 HTML 代码,不修改就展示代码的话,那这时候就是用这个库的时候了。22. ColorJizz-PHP – 颜色操控库ColorJizz是一个简单的库,借助它你可以转换不同的颜色格式,并且做简单的颜色运算
use MischiefCollective\ColorJizz\Formats\Hex;
$red_hex = new Hex(0xFF0000);
$red_cmyk = $hex->toCMYK();
echo $red_cmyk; // 0,1,1,0
echo Hex::fromString('red')->hue(-20)->greyscale(); // 555555
它已经支持并且可以操控所有主流颜色格式了23. PHP Geo – 地理位置定位库phpgeo是一个简单的库,用于计算地理坐标之间高精度距离。例如:
use Location\Coordinate;
use Location\Distance\Vincenty;
$coordinate1 = new Coordinate(19.820664, -155.468066); // Mauna Kea Summit 茂纳凯亚峰
$coordinate2 = new Coordinate(20.709722, -156.253333); // Haleakala Summit
$calculator = new Vincenty();
$distance = $calculator->getDistance($coordinate1, $coordinate2); // returns 128130.850 (meters; ≈128 kilometers)
它将在使用地理位置数据的app里出色工作。你可以试译 HTML5 Location API,雅虎的API(或两者都用,我们在weather web app tutorial中这样做了),来获取坐标。24. ShellWrap – 优美的命令行包装器借助 ShellWrap 库,你可以在PHP代码里使用强大的 Linux/Unix 命令行工具。
require 'ShellWrap.php';
use \MrRio\ShellWrap as sh;
//列出当前文件下的所有文件
echo sh::ls();
//检出一个git分支
sh::git('checkout', 'master');
//你也可以通过管道把一个命令的输出用户另一个命令
//下面通过curl跟踪位置,然后通过grep过滤’html’管道来下载example.com网站
echo sh::grep('html', sh::curl('http://example.com', array(
'location' => true
)));
//新建一个文件
sh::touch('file.html');
//移除文件
sh::rm('file.html');
//再次移除文件(这次失败了,然后因为文件不存在而抛出异常)
try {
sh::rm('file.html');
} catch (Exception $e) {
echo 'Caught failing sh::rm() call';
}
当命令行里发生异常时,这个库抛出异常,所以你可以及时对之做出反应。它也可以通过管道让你一个命令的输出作为另一个命令的输入,来实现更强的灵活性。
来自:kelinlin
我们整理最近5年的每个月TIOBE发布的编程语言排名来看,PHP排名一直都徘徊在六到十名之间,最近一次公布中PHP排在第八名。
TIOBE发布2020编程排名PHP开发优势主要在web开发,web领域开发语言有很多,常用有java,Python,visual basic .net等等,而且大型web开发我们一般还是会选择java为主,这不仅考虑安全问题,而且还考虑网站稳定行。
所以网上很多PHP开发者很担心容易被某种编程语言代替其中web领域位置,而且我们发现现在网上都是在宣传学习java,c,Python等语言,PHP慢慢淡出开发者的视野。
我们觉得PHP在web开发领域不会在短时间被其他编程语言代替,PHP作为20多年的老牌编程语言,目前在开发领域已相对成熟稳定,不管新编程语言还是目前旧编程语言也无法代替。
ThinkPHP(FCS)是一个轻量级的中型PHP框架,新手容易上手,开发速度快,即使你对php开发不是很了解,但是ThinkPHP依然可以让初学者快速了解PHP开发过程,ThinkPHP适合用于中小项目的开发。
ThinkPHPphp框架中位居首榜的我们认为还是Laravel。
我们常说composer 是php的未来,如果没有composer,PHP肯定要走向没落。
Laravel设计思维非常先进的,基本可以PHP发挥到最的地步,Laravel适合中级以上开发者。
LaravelPHP开发者听说过Swoole?Swoole是PHP异步网络通信引擎,PHP开发者可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务,当然还有一个workerman,不了解的,赶紧去学习,PHP未来是有希望。
对于php开发小白来说搭建一个php运行环境就是一道坎!
因为要做php开发,搭建一个能够运行php网站的服务器环境是第一步,传统的php环境软件非常复杂,好在很多公司开发了一键搭建php安装环境,一键进行php环境配置,大大节省了搭建php mysql环境的时间!对老手来说安装配置php环境也不再是一件烦琐的事。
接下来大脸猫来给大家分享七种PHP开发环境搭建工具,当然也不仅仅有这七种仅仅只是这几种比较常见;
一、phpStudy
phpStudy是一个新手入门最常用的开发环境。(还有一个梗就如同phpStudy的名字的中文意思一样PHP学习)
phpStudy是一个PHP调试环境的程序集成包;
该程序包集成最新的Apache/Nginx+PHP+MySQL+phpMyAdmin+ZendOptimizer+OpenSSL,一次性安装,无需配置即可使用,是非常方便、好用的PHP调试环境;
该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。
二、WampServer
WampServer也同样的也是和phpStudy一样操作简单对小白比较友好。
WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。
WampServer就是Windows、Apache、Mysql、PhpMyadmin、SqlBuddy、XDebug PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。
三、XAMPP
XAMPP相对于phpStudy和WampServer就对于小白没有那么友好了,操作门槛就稍稍有点高了;而且XAMPP是目前支持操作系统最多的工具了。这样就对于在公司用Windows回家用Mac OS x的程序员就比较友好了。
XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包;
这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了;
它可以在Windows、Linux、Solaris、Mac OS X 等多种操作系统下安装使用,支持多语言:英文、简体中文、繁体中文、韩文、俄文、日文等。
许多人通过他们自己的经验认识到安装 Apache 服务器是件不容易的事儿;
如果您想添加 MySQL、PHP 和 Perl,那就更难了;XAMPP 是一个易于安装且包含 MySQL、PHP 和 Perl 的 Apache 发行版;
XAMPP 的确非常容易安装和使用:只需下载,解压缩,启动即可。
四、MAMP
MAMP分为两种MAMP和MAMP Pro for Mac;MAMP就不讲了,MAMP Pro的功能真的是非常的强大,但是但是MAMP只支持Mac OS系统所以优点和缺点也非常明显;
名称MAMP是源自系统组件名称的首字母缩写:
macOS、Apache、MySQL或MariaDB和PHP,Perl或Python。
该名称源自LAMP,LAMP是广泛用于网站的所有开源软件的类似堆栈,但是用专有的macOS代替了开源Linux操作系统。(对于其他操作系统,也存在类似的“AMP”堆栈。)但是MAMP不仅限于这些组件选择。例如,可以使用Nginx代替Apache,并用MariaDB代替MySQL。
包含MAMP的某些软件包(尤其是Apache和PHP)已预先安装在macOS上。其余版本的兼容版本可轻松安装和使用。通过在便携式计算机或台式计算机上设置本地开发环境,而无需独立的Web服务器,MAMP通常与流行的CMS程序(例如WordPress和Drupal)一起使用并为其开发。
五、IIS
互联网信息服务(英语:Internet Information Services,简称IIS),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。
图形界面的新IIS管理器在防火墙里不开放任何端口的情况下就可以通过HTTP的远程管理,该管理工具是完全可扩展的。
图形界面的新IIS管理器支持HTTP远程管理协议,在无需DCOM的情况下允许无缝地进行本地,远程,甚至跨互联网的连接或在防火墙里开放其它管理端口。
六、宝塔面板
宝塔面板是大脸猫觉得相对而言在这几个工具中最友好的一个
宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率。
例如:创建管理网站、FTP、数据库,拥有可视化文件管理器,可视化软件管理器,可视化CPU、内存、流量监控图表,计划任务等功能。
宝塔面板拥有极速方便的一键配置与管理,可一键配置服务器环境(LAMP/LNMP/Tomcat/Node.js),一键部署SSL,异地备份;
提供SSH开启关闭服务,SSH端口更改,禁ping,防火墙端口放行以及操作日志查看;
CPU、内存、磁盘IO、网络IO数据监测,可设置记录保存天数以及任意查看某天数据;
计划任务可按周期添加执行,支持SHELL脚本,提供网站、数据库备份以及日志切割,且支持一键备份到又拍云存储空间,或者其他云存储空间里;
通过web界面就可以轻松管理安装所用的服务器软件,还有实用的扩展插件;
集成方便高效的文件管理器,支持上传、下载、打包、解压以及文件编辑查看。
七、UPUPW
UPUPW是目前Windows平台下最具特色的Web服务器PHP套件。
UPUPW PHP环境集成包是目前Windows平台下最具特色的Web服务器PHP套件,包括Apache版、Ngix版和Kangle版:Apache/Nginx+PHP+MySQL+phpMyAdmin+Xdebug+Memcached+eAccelerator+ZendGuardLoader/Optimizer;
UPUPW PHP套件省去了您搭建Web服务器PHP环境的复杂程序,下载解压到装有任意Windows系统电脑的非中文目录即可运行。
绿色,安全,稳定,高速!
这七种开发环境工具就分享到这里。
今天就分享到这里,拜拜我是你们的大朋友计算机爱好者大脸猫。
#php#
无论您对PHP的熟练程度如何,这个全面的列表都会为您提供18种工具,使您的开发生活更轻松,更高效。
PHP是一种快速的脚本语言,无处不在的Web开发。WordPress使用该语言作为开发人员增强平台的核心接口。它相对容易学习,并得到开发社区的良好支持。
虽然PHP可以帮助开发人员快速创建Web应用程序,但是没有与该语言相关的开发环境。相比之下,Microsoft的Visual Studio等开发环境带有许多安装功能。Visual Studio具有开箱即用的开发人员可用的编码,调试和部署功能。
PHP有很多软件包和支持工具。然而,它们往往是分散和零碎的。这可能会给希望增强其虚拟工具箱的开发人员带来问题。这个方便的指南将汇集流行的工具,开发人员可以在他们需要将PHP开发置于过载时参考这些工具。
开发环境
PHP有许多开发环境。其中包括集成开发环境(IDE)和文本编辑器,以及将多个工具和流程合二为一的混合环境。
ScriptCase
ScriptCase.net
ScriptCase.net允许开发人员快速开发支持Web的应用程序。这些应用程序支持与数据库和报告生成的连接 该软件允许您在几秒钟内从原型到生产。成本可能会禁止小公司使用它。因此,它面向中型企业。
主要特征
连接到大多数主要数据库引擎。生成包括数据透视表的图表。创建交互式报告。导出PDF,XLS等常用格式。
成本
20天免费试用。初学者 - 每年279.20美元(仅限单个数据库)。专业 - 每年319.20美元。企业 - 每年479.20美元。
SublimeText
SublimeText.com
有理由在IDE上使用文本编辑器。有时,IDE可能对某些项目来说过度杀伤。此外,当开发人员首先学习一门语言时,IDE可以成为他们学习的拐点。这个文本编辑器非常适合没有大预算或大容量服务器的初创公司。
主要特征:
转到任何功能 - 可以在编辑器中立即跳转到文件,文本或行。拆分编辑。同时编辑 - 可以一起更改多个文本或代码实例。
成本
一次性收费80美元。
Eclipse PDT
eclipse.org/pdt
将Eclipse等工具归类为IDE变得越来越困难。它变得如此之多。Eclipse是为使用Java代码的开发人员创建的。它已经扩展到包括其他语言,如PHP。虽然这个工具是开源的,但对于初创公司来说可能有些过分。它占用了相当数量的计算资源,对于小公司来说可能是稀缺的。
主要特征
PHP中的代码分析。格式化代码。语法突出显示。代码模板。单元测试。调试。内容辅助。
成本
开源(免费)
Zend Studio
zend.com
Zend Studio是一个将PHP开发提升到新水平的IDE。它具有一组强大的功能,可以部署到任何服务器,包括云中的服务器。它声称针对PHP 7进行了优化,这比以前的版本快得多。Zend Studio是适用于任何规模公司的理想工具。
主要特征
广泛的Eclipse插件功能。部署到云,包括Microsoft Azure和Amazon AWS。无缝部署到Zend Server。Zend Server实现了持续集成和强大的安全功能。
成本
个人执照:89美元。基本许可证:189美元。免费试用版可供下载。Zend Server可作为Azure上的产品提供。
XAMPP
XAMPP.org
经验丰富的开发人员熟悉Apache解决方案。XAMPP是由Apache Friends组织创建的开发平台。它适用于大多数需要MySQL数据库解决方案的组织。根据他们的要求,对于初创公司来说可能有点过分。
主要特征
它是PHP最古老的开发平台之一。它拥有超过10年的所有参与开发人员的综合经验。易于安装(通过向导)。Apache系列产品的一部分。MySQL和Perl是安装的一部分。可以在XAMPP安装之上安装CMS组件(通过Bitnami)。易于控制的面板,适用于所有组件。
成本
开源(免费)。
性能,代码分析,APM,日志记录
代码分析器,APM和日志监视器等性能工具可帮助开发人员发现效率低下和错误。同样,有许多可用于PHP的工具。根据您的开发阶段,您可以选择一种工具而不是另一种工具。例如,代码分析器在开发阶段最有效,而APM在部署后监控您的应用程序。有些工具将所有这些性能工具合二为一。
Stackify
Stackify.com/retrace
Retrace超越了标准的APM(应用程序性能监控),可以在一个易于使用的解决方案中为开发人员提供所需的所有工具。它最初只支持Java和.NET,但很快就会支持PHP。它增强了日志和错误跟踪功能,使其脱颖而出。它也具有成本效益。该工具非常适合团队诊断,改进和加速应用程序性能。
主要特征
查看与异常相关的日志记录,以便在客户执行之前快速查找并修复问题。确定应用程序堆栈的哪个部分是瓶颈以及哪些Web请求受到影响。跟踪和监控所有关键应用程序和服务器指标。通过代码分析捕获有关代码执行操作的重要详细信息。
成本
14天免费试用。非生产服务器每月10美元。每台生产服务器每月25美元 - 50美元。
ZEPHIR
zephir-lang.com
Zephir被认为是一种代码增强工具,但它本身就是一种编程语言。它使PHP编码器能够创建由PHP引擎编译但由其运行的函数。PHP是一种解释型语言,因此Zephir的编译特性比本机PHP函数创建更快的组件。该工具更适合中级开发人员。各种规模的组织都可以发现这种产品是有益的。
主要特征
使用与C类似的语言创建函数组件被编译为共享库,以便更快地运行。无法访问指针。指针可能会给开发人员带来问题,而Zephir不允许这样做。
成本
开源(免费)。
New Relic APM
Newrelic.com
New Relic是业界领先的APM,支持许多顶级语言,包括PHP,Ruby,Java和.NET。它提供了对应用程序性能的全栈可视性,包括移动应用程序和基础架构监控。
主要特征
应用程序性能趋势一目了然。浏览器,移动和基础架构监控。各个SQL语句的性能跟踪。低影响生产螺纹轮廓仪。代码级诊断。跨应用程序跟踪。
成本
每台服务器每月75-600美元,每年便宜一些。
比较New Relic和Retrace
AppDynamics
AppDynamics.com
AppDynamics迎合了寻求一体化性能监控解决方案的大型企业。企业可以将AppDynamics用作SaaS工具以及内部部署选项。
主要特征
代码级诊断。基础设施和最终用户监控。基线绩效发展。绩效指标可视化。
成本
每台服务器每月230美元。
来自Solarwinds的AppOptics
AppOptics.com
SolarWinds对其性能监控工具进行了大量更改。首先,他们收购了顶级APM TraceView。最近,他们将TraceView功能增强并集成到SolarWinds的基础设施监控工具AppOptics中。AppOptics现在支持基础架构和应用程序性能监控,帮助公司自下而上地显示其性能。
主要特征
150多个集成和插件与其他顶级工具。服务器和基础架构监控应用监控和可视化。自定义指标和分析。
成本
每位主人每月20美元。包括基础架构监控服务和每台主机400个自定义指标
调试
调试工具与代码分析器类似,通常是手工使用的。在分析器识别优化代码的机会的情况下,调试器会在代码中查找错误。
XDebug
xdebug.org
XDebug已成为PHP调试器的事实标准。XDebug是一个可以集成到IDE中的扩展,大多数IDE都支持它。它对各级开发人员都很有用。由于大多数PHP工具都包含XDebug,因此大多数组织将使用它作为使用其他工具的一部分。
主要特征
适用于大多数IDE。自2002年以来一直存在。单步调试功能。堆栈跟踪功能。可与其他前端调试解决方案一起使用。
成本
开源(免费,请求捐赠)。
DebugBar
DebugBar.com
DebugBar是任何公司开发人员的理想工具。它不是特定于PHP,而是在Web开发人员的工具箱中占有一席之地。它可以轻松找到HTML和JavaScript错误。
主要特征
检查CSS元素。评估JavaScript。可以直接对HTML进行直接更改。监控网络流量。
成本
自由
版本控制
版本控制系统可帮助开发团队管理其源代码和代码分支。当开发人员处理更新和新功能时,他们保持代码的主要分支安全。随着团队的发展,版本控制变得更加重要。在没有版本控制系统的情况下维护可靠的基础设施变得越来越困难。
Git
git-scm.org
Git是一个版本控制解决方案。您可以将Git与第三方存储库一起使用,也可以作为独立解决方案使用(不推荐)。Git很受程序员的欢迎,公司正在采用它。无论规模大小,此解决方案都适用于任何公司。您的公司可能有不同的解决方案,但许多开发人员将其用于个人项目。
主要特征
在开发社区中被许多人使用。知识很容易转移。一个相对容易学习的命令行界面。轻松支持基于云的存储库。
成本
Git是开源的(免费)。
GitHub
github.com
人们经常混淆git和GitHub,但它们是两个独立的解决方案。但是,他们经常一起工作以提供整体解决方案。GitHub是一个基于云的存储库,git可以用作其事务的机制。它被程序员广泛使用,许多公司都认识到该解决方案的好处。
主要特征
基于云的解决方案,这意味着它可以在任何地方访问。简单易学。广泛接受使技能可转移。可用于协作开发解决方案。
成本
公共存储库的开源。基于层级的定价从每月7美元(单个用户)开始,每个用户每月最多21美元用于商业许可。
Vagrant
vagrantup.com
Vagrant并不是真正意义上的版本控制解决方案。但是,它可用于控制不同版本的环境,这对PHP开发人员很有用。Vagrant为开发人员提供了创建虚拟环境的功能。例如,如果他们有理由支持多个版本的PHP,可以使用Vagrant轻松完成。这不应该是首选解决方案,也不应取代标准版本控制的需要。
主要特征
根据项目创建具有所需组件的开发环境。在不再需要环境时轻松破坏环境。
成本
自由
安全
网络安全是我们这个时代最重要的问题之一。下面的PHP安全工具可以帮助开发人员在太晚之前识别代码中的漏洞。
RIPS
RipsTech.com
2010年,一个名为RIPS的开源项目被启动,以帮助处理PHP安全性。该计划产生了一个可以检查漏洞的PHP扫描程序。随着功能的增长,它变得过于强大,无法作为一个开源项目处理,导致RIPS Tech接管该项目。之前的版本仍然可用但不受支持。
主要特征
完整的PHP支持。消除误报。可用于代码质量分析。完整的风险检测机制。符合多个行业安全标准。导出结果可用。
成本
优质产品(价格未公布)。
其他:Chrome浏览器开发
https://www.google.com/chrome/
开发人员喜欢使用Chrome浏览器,因为它有一个扩展程序,可以报告HTML页面的元素。它易于配置和学习。虽然这不是PHP解决方案,但任何Web开发(包括PHP)都使用HTML,并且有助于查看哪些HTML元素受到更改等的影响。
主要特征
容易安装,也容易使用。显示有关HTML元素的有用信息。
成本
自由
概要
PHP开发人员可以使用的大量工具使这种情况变得混乱,特别是对于不熟悉该语言的开发人员而言。幸运的是,大多数软件解决方案都可以免费(但有限)地访问该软件,以便对其进行试用,看看它是否适用于您的解决方案。
作为开发人员,随时了解您用于开发的任何工具的最新发展。
目前在市场上流行的PHP框架不少50个,国内使用频率最高的除非就是轻量级的中型框架thinkphp,基于组件的高性能php框架Yii ,设计思想是很先进的,非常适合应用各种开发模式TDD Laravel框架,一款纯PHP开发的开源高性能的PHPsocket服务器Workerman框架。
在所有框架中最适合初级php程序员是thinkphp,适合中级的Laravel,高手级别Yii,每个框架都有它的特点,而且使用方式也不也一样,所以学会两种框架你也可以成为高手了,如果自己开发一个属于自己的框架,这样就不用学习别人的框架了,那么自己开发一个PHP框架有多难?
PHP本身是简单的编程语言,学习起来不是很难,在网页应用的框架思想基本都是MVC模式或MC模式,其实就是在处理他们的关系,设计过api的程序员都应该知道,MC模式只要处理好数据返回给前端就可以,至于MVC模式就是多处理一步,利用smarty渲染前端页面,所以自己开发框架不难,而是难在于这个框架能实现哪些功能,如果你说就简单增删改查框架,那么自己去研究一下php的面向对象实现思想就可以实现。
自己为什么不开发框架?开发框架要维护,要升级功能,还不如直接使用别人完整框架的功能进行开发。
尽量完整的需求方案,具体到功能上:建模结构UML,建立数据库: 1、建立的表名、字段名要与他的功能有关系。 2、根据结构建立数据库表,原则是不定项内容一定要分表。 3、字段类型要考虑内容是否够用就够就好,选择适合的类型INT Varchar Date(4)设计HTML文件和脚本的实现 根据模和数据库来设计页面是个很科学的方法,当然有的时候有人喜欢根据模型设计页面,数据库基于页面设计,都是可以的。 设计页面时要考虑到每个细节,包括提示消息页面,错误页面。(5)PHP代码的书写1、先建立底层结构和文件夹(如果是大型的网站同样设计一个文件UMML)2、基础功能分类关联,以便今后代码引用。3、代码的书写,注意简洁性和函数的使用,内部函数能实现的尽量使用内部函数。4、在部分关键位置加以代码注释。(6)程序的测试和修正1、对于发现的BUG不能就解决BUG而解决,要处于完整程序考虑。避免收之东隅收之桑榆。2、对于解决过的BUG已经要详细记录,以便日后更新。多人开发应该注意什么使用版本服务器:CVS、SVN...功能:1、单个文件历史版本的记录和恢复2、文件的锁定和更新3、单个或多个文件程序之间的沟通4、保护程序的安全性不受单个程序的误操作而丢失
尽量完整的需求方案,具体到功能上:建模结构UML,建立数据库: 1、建立的表名、字段名要与他的功能有关系。 2、根据结构建立数据库表,原则是不定项内容一定要分表。 3、字段类型要考虑内容是否够用就够就好,选择适合的类型INT Varchar Date(4)设计HTML文件和脚本的实现 根据模和数据库来设计页面是个很科学的方法,当然有的时候有人喜欢根据模型设计页面,数据库基于页面设计,都是可以的。 设计页面时要考虑到每个细节,包括提示消息页面,错误页面。
(5)PHP代码的书写1、先建立底层结构和文件夹(如果是大型的网站同样设计一个文件UMML)2、基础功能分类关联,以便今后代码引用。3、代码的书写,注意简洁性和函数的使用,内部函数能实现的尽量使用内部函数。4、在部分关键位置加以代码注释。(6)程序的测试和修正1、对于发现的BUG不能就解决BUG而解决,要处于完整程序考虑。避免收之东隅收之桑榆。2、对于解决过的BUG已经要详细记录,以便日后更新。多人开发应该注意什么使用版本服务器:CVS、SVN...功能:1、单个文件历史版本的记录和恢复2、文件的锁定和更新3、单个或多个文件程序之间的沟通4、保护程序的安全性不受单个程序的误操作而丢失
文章来源:昆明网站建设专业品牌——找北网络科技(zhaobeikj.com)
进入互联网行业愈发觉得学习一门计算机语言是多么的重要,PHP成为众多新手学习的语言,主要原因还是在于PHP还是比较容易入门的,也是最适合新手学习的。PHP相对于其他语言,比较简单,相对好上手,比较适合零基础的人学习,但是PHP只完成了一个网站或者系统的一部分。
新手在学习PHP语言之前都会有一些疑问,那就是应该如何去学习PHP语言?想要开发一款CMS程序需要多久的学习?有哪些适合新手阅读的PHP方面书籍等等。
PHP语言本身的东西并不多,真正有用东西都在PHP之外,作为开始入门还是比较合适的,有人说过:真正的 PHP 学习是从你开发第一个项目开始。总结起来就是不仅要多看书还是多动手做。PHP语言最开始就是基础语法的学习,编程是一项技术活,看理论看基础也要多练习包括内置函数/类的学习。
学习PHP有哪些用处呢?你现在看到的百度/淘宝/京东,还是你听说过的facebook,youtube都是PHP开发的。另外,现在PHP不仅仅可以做网站开发,还可以做微信开发,手机APP开发,还可以做企业OA开发。
互联网不断发展PHP语言同样也在进步,不断的有新工具为PHP的生命力添砖加彩。随着PHP7以及Swoole框架的来临,其性能开始与Javaee不相上下。对大数据的处理也越来越好,所以其前景是光明的。
学习的书籍不如多看看官网的文档,官网的介绍是比较详细也是准确的,建议尽量不要在网上随便下载类库的源码使用,Composer提供了几乎所有做php可能会需要用到的第三方库。
就想之前说的PHP只完成了一个网站或者系统的一部分。一个运行的网站或者软件系统可以分为前端页面,后端程序,数据库,linux。而处理后端的PHP仅仅是只占了四分之一,因此每一项都要有充分的了解,一名优秀的 PHP 工程师技能,完全是靠项目累积出来的,每多做一个项目能力值和经验值就会增加。
更多资讯关注【河北达内】回“资料”获取学习礼包。
以下都是我看过都书籍,无论是新手或中级别的工程师,我可以保证内容质量,大佬可跳过。
概述
知识无价,还是建议各位童鞋把更多的资金投入到学习中。书名排名不分前后。
《PHP7内核剖析》
PHP7内部剖析深入理解PHP最佳良品。
《鸟哥的Linux私房菜》
鸟哥的Linux私房菜PHP码农最爱的LINUX入门书籍。
《Modern PHP (中文版)》
Modern PHP 中文版学习(新)PHP的好书。
《Learning PHP设计模式》
Learning PHP设计模式不会设计模式,你跟我说你是程序员?
《细说PHP》
细说PHP这是我入门PHP的时候看的一本书,内容虽然有些摘抄,但知识点概括的很全。
《高性能PHP 7》
高性能PHP7PHP全球开发者大会上推荐的一本书,感觉内容很前卫、新鲜。吕毅大佬翻译的。
《Docker技术入门与实战》
Docker技术入门与实战你确定你不了解下Docker ?
《疯狂JAVA讲义》
疯狂JAVA讲义其实Java应该在PHP开发者的必会名单内。
《Redis入门指南(第2版)》
Redis入门指南(第2版)nosql 了解一下?
《算法谜题》
算法谜题代码敲累了?来~换换脑子。
致谢
感谢各位看完本篇白话文,最近几天一直在写相当于过往经历一样的文章,并不是不去创造新的内容,而是我更希望把我所知道的,我做过的,告诉大伙,好的地方可借鉴,差的地方可预防。我也不是一个大佬。互相学习把。谢谢。
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
一、安装ThinkPHP5
安装需求:PHP版本不得小于5.4;
1、从官网进行下载安装
2、通过composer进行安装
如果还未安装composer,请先安装composer并配置环境变量
运行如下命令,进行安装:
composer create-project topthink/think=5.0.* tp5 --prefer-dist
3、通过git安装
3.1、运行如下命令,安装thinkphp的应用项目
git clone https://github.com/top-think/think tp5
安装成功后的界面:如下图所示
3.2、进入到刚才已下载的tp5目录下,运行如下命令,安装thinkphp的核心框架
git clone https://github.com/top-think/framework thinkphp
安装成功后的界面:如下图所示
安装完成,验证是否安装成功,在浏览器中输入:http://hostname/tp5/public/
如果浏览器显示如下图所示,则说明框架安装成功。
二、目录结构框架的目录结构,如下图所示:
application:应用目录
index:模块目录
index/config.php:模块配置文件
index/common.php:模块公共函数文件
index/controller:控制器目录
index/model:模型目录
index/view:视图目录
config.php:应用配置文件
command.php:命令工具配置文件
common.php:应用公共函数文件
tags.php:应用行为扩展定义文件
extend:扩展类库目录
public:WEB 部署目录(对外访问目录)
static:静态资源存放目录(css,js,image)
index.php:应用入口文件
.htaccess:用于apache重写
router.php:快速测试文件
runtime:应用的运行时目录
vendor:通过composer安装的第三方类库目录
thinkphp:系统核心目录
lang:系统语言包目录
library:框架核心类库目录
tpl:系统模板目录
base.php:基础定义文件
route:路由配置目录
三、ThinkPHP框架最基本的架构
thinkphp是基于MVC模式开发的,业务逻辑、数据、界面显示分离,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
1、入口文件
用户发起的请求都会经过应用的入口文件,通常是 public/index.php文件。入口文件的内容如下:
在入口文件index.php中加载了基础文件base.php文件,在base.php中干了这样一些事情:
载入Loader类
注册自动加载
注册错误和异常处理机制
实现日志接口
注册类库别名
加载完基础文件之后,最后在index.php中执行应用并响应。
2、应用
ThinkPHP的应用是一个管理系统架构及生命周期的对象,由系统创建完成,应用通常在入口文件中被调用和执行,每个应用都具有自己独立的模块、config配置文件以及common公共函数文件。
3、模块
一个应用是可能是由多个模块组成的,通俗的来说,这些模块即为该应用目录下面的一个个的子目录,每个模块都有自己独立的MVC结构、config配置文件以及common公共函数文件。
注:模块名称请避免使用PHP保留关键字,否则会造成系统错误。
4、控制器
控制器主要负责接收发送过来的请求,并调用相关的模型业务逻辑的数据处理,并最终将用户请求数据渲染到视图页面上。
5、模型
模型类通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据。在定义模型时,要注意和表名对应,因为框架中的模型会自动对应数据库中的数据表。在ThinkPHP中模型类的命名规则是除去表前缀的数据表名称,命名方式采用的驼峰命名法,而且模型的首字母要大写。
6、视图
视图接收从控制器渲染过来的数据,将数据渲染的成用户可见的页面。
7、命名空间
命名空间是程序设计者命名的内存区域,程序设计者根据需指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间中,从而与其他全局实体分隔开。
通俗的说,每个名字空间都是一个名字空间域,存放在名字空间域中的全局实体只在本空间域内有效。名字空间对全局实体加以域的限制,从而合理的解决命名冲突。
我们一直在倾听大家口述的故事,访谈时间也有最初的1个半小时拉长到平均5天,我们把能写的故事做成了类似《人物故事》专栏,同步更新在微博#我是社会人#,简书#树洞#专栏。说实话,并不是每个人的经历都能写成真正的故事,因为故事对人物要求太过丰满,丰满到每一个细节都需要价值观的转变和伏笔,所有故事场景都需要合并去重复,最终留下的故事寥寥无几。这些故事无一例外的反映了一个问题,生活手艺和平台的缺失。为了能弥补这一块内容,我们决定和大家一起学门手艺。在网站开发方面,我们主推PHP方面的知识。在职场学习方面,我们主推OFFICE系列相关知识。在赚钱生存方面,我们主推CFA系列相关知识。目前暂定三项,所有的这些都会收录在微博#有情调特爱学#话题中。想起自己毕业那会学C#的日日夜夜,甚是苦恼。由于当年从事WinForm方向,既不是APP也不是Web,所以错过了很好的Web井喷期红利,当年学习做Web开发的人,接的项目学的手艺,足以养活一家人了。为此,至今我都后悔不已。我想,只要移动互联不死,以后就应该是Web的天下了,因为大部分架构已从十年前的C/S架构转为B/S架构了,而WinForm方向早已转入企业级,.net (微软的产品)对运行库有强制性要求,这样就逼着开发者和甲方都需要安装这么庞大的运行库,费用也不低,虽说不上孰是孰非,但互联网轻度、快速开发应该是王道。PS:凑足300字申请原创,所有课程均免费,我们自行学习收费课程并经提炼、实践制作,如不反感,请帮忙转发, 并在微博上刺客_老莫 @戏子入画_夏雨 ,谢谢支持。