


Essential PHP development tools Introduction to PHP continuous integration tools (Part 1)_PHP tutorial
In this article, we will introduce the continuous integration concept that is often used in current software engineering, and also introduce how to make good use of PHP in PHP development There are currently some open source continuous integration management tools to manage projects well.
The concept of continuous integration
The concept of continuous integration was proposed in modern software engineering. It was first seen in agile development methodologies. Master Martin Fowler said this about continuous integration Definition: Continuous integration is a software development practice in which team development members integrate their work frequently, usually each member integrates at least once a day, which means that integration may occur multiple times a day. Each integration is verified through automated builds (including compilation, release, and automated testing) to detect integration errors as quickly as possible. Many teams find that this process can greatly reduce integration issues, allowing the team to develop cohesive software faster.
The following introduces the continuous integration tools in PHP:
PHPUNIT
First of all, PHPUNIT is a unit testing tool in PHP , the project address is: http://www.phpunit.it. It
can automatically run the unit test code you wrote and give a pass or fail result. The installation steps are as follows. You can use PEAR in PHP to install:
<ol class="dp-c"> <li class="alt"><span><span>sudo apt-get install php5-curl php-pear php5-dev </span></span></li> <li><span>sudo pear upgrade pear </span></li> <li class="alt"><span>sudo pear channel-discover pear.phpunit.de </span></li> <li><span>sudo pear channel-discover components.ez.no </span></li> <li class="alt"><span>sudo pear channel-discover pear.symfony-project.com </span></li> <li><span>sudo pear install phpunit/PHPUnit </span></li> </ol>
. After that, you can execute phpunit on the command line in the following format:
Phpunit unit test php file name. php
In addition, you can also execute the following command to generate a unit test coverage report:
phpunit --coverage-html ../CodeCoverage
This will be in the specified directory Generate a unit test coverage report in the directory CodeCoverage. For example, in this example, the unit test coverage report will be generated in the directory CodeCoverage, as shown below:
▲Click to see the larger image
If you click on each PHP file in the picture above, you can also see each one in detail The unit test coverage of the file is as shown below:
▲Click to see the larger picture
From the picture above, you can see the unit test coverage of the method called in each PHP file, and you can also see which lines of code have been unitized The tests have been covered and which ones have not been covered (green means it has been covered, orange means it has not been covered), as shown below:
▲Click to see the larger image
PHP CodeSniffer
PHP CodeSniffer is a PHP The code style detector checks the code style in the application based on the preset PHP coding style and rules. It has built-in coding style rules for ZEND and PEAR. Of course, developers can also customize it. The address of the project is: http://pear.php.net/package/PHP_CodeSniffer/redirected. The installation method is as follows:
<ol class="dp-c"> <li class="alt"><span><span>sudo pear install PHP_CodeSniffer </span></span></li> <li><span>phpcs --standard=Zend c:phpcode </span></li> </ol>
After phpcs –standard, it is specified to use Zend’s recommended code style standard for checking. , the last parameter is the directory where the PHP file to be checked is located. After running, a rendering of the check is shown below:
▲Click View large image
PHP Depend
PHP Depend (http://pdepend.org/) is a tool for static code analysis in PHP. It can be used to check the size and complexity of the code in your PHP project. The installation method is as follows:
<ol class="dp-c"> <li class="alt"><span><span>sudo pear channel-discover pear.pdepend.org </span></span></li> <li><span>sudo pear install pdepend/PHP_Depend-beta </span></li> </ol>
An example used is as follows:
pdepend --jdepend-xml=../jdepend.xml --jdepend-chart=../dependencies.svg --overview-pyramid=../overview-pyramid.svg
The above will generate an XML file and two SVG graphic files. The XML file describes the interdependent calls (references) of each PHP file in the project and the code lines of each method, function, and class. An example is as follows:
<ol class="dp-c"> <li class="alt"><span><span><?xml version=”1.0” encoding=”UTF-8”?> </span></span></li> <li><span><metrics noc=”3” nof=”0” noi=”0” nom=”6”> </span></li> <li class="alt"><span><package name=”+</span><span class="keyword">global</span><span>” noc=”17” nof=”0” noi=”0” nom=”237”> </span></li> <li><span><</span><span class="keyword">class</span><span> name=”data_container”nom=”55”> </span></li> <li class="alt"><span><file name=”/home/</span><span class="keyword">case</span><span>-study/libs/data/container.php”/> </span></li> <li><span></</span><span class="keyword">class</span><span>> </span></li> <li class="alt"><span><</span><span class="keyword">class</span><span> name=”data_download” nom=”10”> </span></li> <li><span><file name=”/home/</span><span class="keyword">case</span><span>-study/libs/data/download.php”/> </span></li> <li class="alt"><span></</span><span class="keyword">class</span><span>> </span></li> </ol>
The meaning of noc is class The running script of the code, nof is the number of lines of code for the function, noi is the number of lines of interface code, and nom is the number of lines of method code.
Next let’s take a look at the generated SVG image, which is as follows:
This picture reflects the dependency measurement of packages in the project. The basic theory comes from the measurement of module dependency and stability in software introduced in Robert C. Martin's paper (http://www.objectmentor.com/resources/articles/oodmetrc.pdf). Among them, the following concepts are mentioned:
Afferent Couplings (Ca)
The number of other packages that depend on the analyzed package is used to measure the responsibility of the pacakge.
Simply put, how many other packages or modules call the analyzed package or module.
Efferent Couplings (Ce)
The number of other packages that the analyzed package class depends on, used to measure the independence of the package.
That is, how many other packages it calls.
Abstractness (A)
The ratio of the abstract classes and interfaces in the analyzed package to the number of all classes in the package, the value range is 0-1. If the value is 0, it proves that there are no abstract classes in the package, and there are only classes that implement logical methods. If the value is 1, there are only abstract classes or interfaces in the package
Instability ( I)
I=Ce/(Ce+Ca), used to measure the instability of the package, with a value ranging from 0 to 1. I=0 means the most stable, I=1 means the least stable.
Distance (D)
is used to measure the balance between stability and abstraction of the package. It can be seen that the ideal situation is for A+I to be closer to 1, which can achieve the best balance of abstraction and stability.
In addition, introduce the meaning of another picture generated in php depend. The picture is as follows:
In this picture, the top ANDC represents the average number of inherited other classes, that is, how many classes in the project inherit other classes; AHH is the number of levels of inherited other classes. CALLS is the total number of times the method is called, and FANOUT is the number of types referenced by the class. CYCLO is cyclomatic complexity (for analysis of cyclomatic complexity, please refer to (http://en.wikipedia.org/wiki/Cyclomatic_complexity)). LOC is the number of lines of code, NOM is the number of methods in the project, and NOC is the project The number of classes, NOP is the number of packages in the project.
Relevant data can be calculated according to the division rules indicated in the figure above. For more information, please refer to the php depend manual (http://pdepend. org/documentation/handbook/reports/overview-pyramid.html) detailed analysis.
http://www.bkjia.com/PHPjc/445818.htmlwww.bkjia.comtrue

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



In Debian systems, readdir system calls are used to read directory contents. If its performance is not good, try the following optimization strategy: Simplify the number of directory files: Split large directories into multiple small directories as much as possible, reducing the number of items processed per readdir call. Enable directory content caching: build a cache mechanism, update the cache regularly or when directory content changes, and reduce frequent calls to readdir. Memory caches (such as Memcached or Redis) or local caches (such as files or databases) can be considered. Adopt efficient data structure: If you implement directory traversal by yourself, select more efficient data structures (such as hash tables instead of linear search) to store and access directory information

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

This article discusses how to improve Hadoop data processing efficiency on Debian systems. Optimization strategies cover hardware upgrades, operating system parameter adjustments, Hadoop configuration modifications, and the use of efficient algorithms and tools. 1. Hardware resource strengthening ensures that all nodes have consistent hardware configurations, especially paying attention to CPU, memory and network equipment performance. Choosing high-performance hardware components is essential to improve overall processing speed. 2. Operating system tunes file descriptors and network connections: Modify the /etc/security/limits.conf file to increase the upper limit of file descriptors and network connections allowed to be opened at the same time by the system. JVM parameter adjustment: Adjust in hadoop-env.sh file

This article describes how to clean useless software packages and free up disk space in the Debian system. Step 1: Update the package list Make sure your package list is up to date: sudoaptupdate Step 2: View installed packages Use the following command to view all installed packages: dpkg--get-selections|grep-vdeinstall Step 3: Identify redundant packages Use the aptitude tool to find packages that are no longer needed. aptitude will provide suggestions to help you safely delete packages: sudoaptitudesearch '~pimportant' This command lists the tags

Website performance optimization is inseparable from in-depth analysis of access logs. Nginx log records the detailed information of users visiting the website. Cleverly using this data can effectively improve the speed of the website. This article will introduce several website performance optimization methods based on Nginx logs. 1. User behavior analysis and optimization. By analyzing the Nginx log, we can gain a deep understanding of user behavior and make targeted optimization based on this: High-frequency access IP identification: Find the IP address with the highest access frequency, and optimize the server resource configuration for these IP addresses, such as increasing bandwidth or improving the response speed of specific content. Status code analysis: analyze the frequency of different HTTP status codes (such as 404 errors), find out problems in website navigation or content management, and proceed

This guide will guide you to learn how to use Syslog in Debian systems. Syslog is a key service in Linux systems for logging system and application log messages. It helps administrators monitor and analyze system activity to quickly identify and resolve problems. 1. Basic knowledge of Syslog The core functions of Syslog include: centrally collecting and managing log messages; supporting multiple log output formats and target locations (such as files or networks); providing real-time log viewing and filtering functions. 2. Install and configure Syslog (using Rsyslog) The Debian system uses Rsyslog by default. You can install it with the following command: sudoaptupdatesud

The steps to install an SSL certificate on the Debian mail server are as follows: 1. Install the OpenSSL toolkit First, make sure that the OpenSSL toolkit is already installed on your system. If not installed, you can use the following command to install: sudoapt-getupdatesudoapt-getinstallopenssl2. Generate private key and certificate request Next, use OpenSSL to generate a 2048-bit RSA private key and a certificate request (CSR): openss

Strengthening the security of DebianApache server logs requires collaborative efforts from multiple aspects. The following strategies can effectively reduce security risks: 1. Log monitoring and analysis Automated log analysis: Use logcheck, logrotate and other tools to regularly check and analyze logs to promptly detect suspicious activities and potential attacks. Real-time monitoring system: Establish a log monitoring system, such as ELKStack (Elasticsearch, Logstash, Kibana), to realize real-time monitoring and analysis of log data. 2. Strict permission settings for log file permissions: Reasonably set log file permissions, such as using chmod640/var/log
