PEAR提供了强大的错误处理机制。这篇文章向你展示如何从这个系统中获益。
许多程序已经使用了PEAR的包。许多PHP程序员或多或少的熟悉了PEAR中的错误处理。但是这个机制并不局限于PEAR的包——所有人都能在他们的类和程序中使用这些方法。
这篇文章被分为两个部分:首先我们将看看类中用于错误处理的函数,然后我们将看看如何基于PEAR错误处理机制来处理错误。
我们的例子类称为cvs2db,它把数据从CSV文件插入到数据库的表中。因为数据可能是手写的,他们的数据应该在插入之前先得到验证——落实postcode。函数import()完成读入,检查和插入的工作;它返回损坏的记录数目。如果返回的值大于0,出错的记录集能够使用exportUnvalid()写入到新的CSV文件中。典型的用法是这样的:
<?php $cd = new csv2db(); $dsn = 'mysql://root@localhost/csv2db'; if( 0 < $cd->import("./dat.csv", $dsn, 'address')) { $cd->exportUnvalid("./dat2.csv"); } ?>
可能的错误包括:
要导入的CSV文件不存在,
连接到数据库失败,
记录集损坏,以及CSV导出文件无法创建。
在提供错误信息的经典解决方案中你可能写这样的代码:
<?php $cd = new csv2db(); $dsn = 'mysql://root@localhost/csv2db'; $result = $cd->import("./dat.csv", $dsn, 'address') switch($result) { case FILE_NOT_OPENED: ... break; case DATABASE_ERROR: ... break; default: if(0 < $result) { $cd->exportUnvalid("./dat2.csv"); } else { echo 'every thing ok!' } } ?>
这对于短的脚本来说是可接受的也是常用的办法——但是对于错误处理经常受到关注的大程序来说不是这样。传统的可能性强迫类的作者做最终的决定!在大部分情况下,这个决定根据的是那时对类的调用而不是基于长期的使用和可重用代码的思想。一个灵活的错误处理机制是可重用代码的重要部分,PEAR Error API 就是这样的一种受到良好测试的机制。
用户眼中的类
除了那两个函数之外,类提供了一套错误处理函数和一个自己的错误对象称为DB2CVS_Error,它有一个特殊的本地化的错误信息的特性功能。
现在我将向你展示如何在错误发生时控制类的行为。
局部和全局错误处理
你用setErrorHandling()管理错误处理;这个函数需要两个参数:第一个是错误模式,而第二个(可选的)参数是错误模式特定的选项。例如 setErrorHandling(PEAR_ERROR_PRINT, 'This error occurred %s') 还有 setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_WARNING)。
这个函数的调用方式是一般行为中最重要的:静态还是实体。在类cvs2db中,我们能两者都用来设置错误处理,所有这些调用有相同的结构——为类设置错误模式:
// per instance $cd = new csv2db(); $cd->setErrorHandling(PEAR_ERROR_DIE): // static CVS2DB::setErrorHandling(PEAR_ERROR_DIE); PEAR::setErrorHandling(PEAR_ERROR_DIE);
如果两者给出同样的结果,区别在哪?实体调用仅仅为那个类设置而静态调用对于所有使用PEAR_Error或者从那个类派生的所有类起作用。这个也作用于第一个静态命令CVS2DB::setErrorHandling(PEAR_ERROR_DIE)——虽然它看上去仅仅影响了cvs2db类。
总结:作为一个实体函数使用命令意味着仅仅为这个实体(局部)设置错误模式,而作为静态函数来调用就是为整个脚本设置错误模式(全局)。
setErrorHandling() 和 raiseError()
两个函数都能够被静态调用和作为实体的函数调用。记住怎样的一个组合使得他们如何互相影响的很重要。
基本上是:setErrorHandling()的静态调用仅仅影响raiseError()的静态调用——setErrorHandling()作为实体函数仅仅影响raiseError()作为静态函数调用。在类csv2db中,使用csv2db::setErrorHandling()来设置错误模式是不可行的,因为我们使用$this->raiseError(...)。解决这个闻天有一点小技巧——改写raiseError():
function raiseError(...,$mode=null, $options=null,...) { if($mode==null && $this->_default_error_mode!=null) { $mode = $this->_default_error_mode; $options = $this->_default_error_options; } return PEAR::raiseError(...,$mode, $options,...); }
这样,我们映射实体调用到静态上,如果你用错误模式调用raiseError(),然后这个模式将会覆盖这些设置——这里是指的是全局的设置。
你应当当心错误是如何被类抛出的,如果你不小心,这可能导致不可预期的副作用。

PHP is a server-side scripting language used for dynamic web development and server-side applications. 1.PHP is an interpreted language that does not require compilation and is suitable for rapid development. 2. PHP code is embedded in HTML, making it easy to develop web pages. 3. PHP processes server-side logic, generates HTML output, and supports user interaction and data processing. 4. PHP can interact with the database, process form submission, and execute server-side tasks.

PHP has shaped the network over the past few decades and will continue to play an important role in web development. 1) PHP originated in 1994 and has become the first choice for developers due to its ease of use and seamless integration with MySQL. 2) Its core functions include generating dynamic content and integrating with the database, allowing the website to be updated in real time and displayed in personalized manner. 3) The wide application and ecosystem of PHP have driven its long-term impact, but it also faces version updates and security challenges. 4) Performance improvements in recent years, such as the release of PHP7, enable it to compete with modern languages. 5) In the future, PHP needs to deal with new challenges such as containerization and microservices, but its flexibility and active community make it adaptable.

The core benefits of PHP include ease of learning, strong web development support, rich libraries and frameworks, high performance and scalability, cross-platform compatibility, and cost-effectiveness. 1) Easy to learn and use, suitable for beginners; 2) Good integration with web servers and supports multiple databases; 3) Have powerful frameworks such as Laravel; 4) High performance can be achieved through optimization; 5) Support multiple operating systems; 6) Open source to reduce development costs.

PHP is not dead. 1) The PHP community actively solves performance and security issues, and PHP7.x improves performance. 2) PHP is suitable for modern web development and is widely used in large websites. 3) PHP is easy to learn and the server performs well, but the type system is not as strict as static languages. 4) PHP is still important in the fields of content management and e-commerce, and the ecosystem continues to evolve. 5) Optimize performance through OPcache and APC, and use OOP and design patterns to improve code quality.

PHP and Python have their own advantages and disadvantages, and the choice depends on the project requirements. 1) PHP is suitable for web development, easy to learn, rich community resources, but the syntax is not modern enough, and performance and security need to be paid attention to. 2) Python is suitable for data science and machine learning, with concise syntax and easy to learn, but there are bottlenecks in execution speed and memory management.

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

Using preprocessing statements and PDO in PHP can effectively prevent SQL injection attacks. 1) Use PDO to connect to the database and set the error mode. 2) Create preprocessing statements through the prepare method and pass data using placeholders and execute methods. 3) Process query results and ensure the security and performance of the code.


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

Atom editor mac version download
The most popular open source editor

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version
Visual web development tools

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