백엔드 개발 PHP 튜토리얼 PHP 高手之路(一)_php基础

PHP 高手之路(一)_php基础

May 17, 2016 am 09:47 AM

PHP是一门高效的网络编程语言,由于它具有编写灵活、运行快速等优点,迅速成为Web程序员的首选语言。前不久的一份权威调查表明,现在已经有31.6%的网站使用PHP作为主要的服务器端编程语言。
  但是,要成为一名PHP编程高手却并不容易。并不像很多人想象的那样,只要能够飞快地编写几条简单的代码去解决一个复杂的问题就是PHP编程高手了,真正的PHP高手还需要考虑更多的其它问题。以下三条准则是一名成熟的PHP程序员在编程中应该首先遵循的准则。
  1.懒惰是金
  2.编写漂亮的代码
  3.追求程序的速度,而不是编程的速度
  一、懒惰是金
  做一个懒惰的程序员吗?这个想法太奇怪了!因为这个世界上最忙碌的人可能就是计算机程序员了。但正是因为程序员太忙了,所以才应该在编程时学会偷懒。
  对于一个程序员来说,懒惰的方法有两种:其一,大胆使用现成的别人的程序代码,把这些代码融入到你自己的程序或者项目中去。其二是编写一些有用的代码建立一个函数库,在将来编写程序时可以顺手拈来,省去了许多重复的劳动,自然就可以懒惰一点了。
  这两种偷懒的方法都非常适合PHP程序员了。
  首先,PHP是在自由开放的环境中诞生和成长的一门语言。在世界各地,有成千上万的程序员,他们一直在为PHP的完美而不断奋斗,他们也愿意和别人分享自己的聪明才智和自己编写的代码。你每天都可以从一些PHP网站、邮件列表、新闻组发现大量的优秀的程序代码。这样说,我并不是鼓励你整天等着让别人为你编写代码,但是你可以“站在伟人的肩膀上”,充分发扬“拿来主义”,聪明地应用别人的程序代码可以节省你大量时间。其次,在PHP中,你可以方便地建立自己的函数库,这样可以在你以后编写程序时省去很多麻烦。
  下面笔者为大家介绍几个通用的函数,这些函数有的来自网上的一些开放源代码的项目,有的精选自邮件列表。如果你能把它们加入到你自己的函数库中,迟早你将会发现自己受益无穷。
  1.通用数据库处理函数
  和其它的CGI函数相比,PHP的优点之一是具有很强大的数据库处理能力。但是,在PHP中,对于不同的数据库都使用一些特定的函数来专门处理,缺少通用的数据库处理函数。这大大降低了程序代码的可移植性,这也为初学编程的朋友带来了很多不便。
  在网上,许多程序员都通过封装类解决了这个问题。他们编写了统一的函数用来处理任何流行的数据库——不管是在Linux世界深受欢迎的Mysql还是在Windows平台上广泛流行的SqlServer。就笔者个人来说,非常喜欢使用这些函数,因为可以直接使用一些简单的诸如"query"、"next_record"之类的函数,而不需要考虑数据库的连接、数据库句柄这些复杂的东西,更不需要考虑使用的是何种数据库。
  如果你需要这些函数,你可以通过访问以下的几个网址而得到:
  http://phplib.netuse.de/
  http://phpclasses.UpperDesign.com/browse.html/package/20
  http://phpdb.linuxbox.com/
  2.变量调试函数
  PHP程序的调试一直是一件让人头疼的事,它既不像VB等高级语言那样有集成的编译调试环境,也不想Perl那样可以在Linux或者DOS环境下直接运行。其实,我们完全可以通过灵活地使用echo语句来完成对PHP的调试工作。
  下面的几个函数可以让你随时查看程序中任何变量的类型及其值。
  function ss_array_as_string (&$array, $column = 0) {
  $str = "Array(
n";
  while(list($var, $val) = each($array)){
  for ($i = 0; $i   $str .= "    ";
  }
  $str .= $var. ==> ;
  $str .= ss_as_string($val, $column+1)."
n";
  }
  for ($i = 0; $i   $str .= "    ";
  }
  return $str.);
  }
  function ss_object_as_string (&$object, $column = 0) {
   if (empty($object->classname)) {
  return "$object";
  }
  else {
  $str = $object->classname."(
n";
  while (list(,$var) = each($object->persistent_slots)) {
  for ($i = 0; $i   $str .= "    ";
  }
  global $$var;
  $str .= $var. ==> ;
  $str .= ss_as_string($$var, column+1)."
n";
  }
  for ($i = 0; $i   $str .= "    ";
  }
  return $str.);
  }
  }
  function ss_as_string (&$thing, $column = 0) {
  if (is_object($thing)) {
  return ss_object_as_string($thing, $column);
  }
  elseif (is_array($thing)) {
  return ss_array_as_string($thing, $column);
  }
  elseif (is_double($thing)) {
  return "Double(".$thing.")";
  }
  elseif (is_long($thing)) {
  return "Long(".$thing.")";
  }
  elseif (is_string($thing)) {
  return "String(".$thing.")";
  }
  else {
  return "Unknown(".$thing.")";
  }
  }
  需要的时候,在程序中简单地加入下面的一条代码即可查看程序中的所使用的变量(包括数组和对象)的类型和值:
  echo ss_as_string($my_variable);
  使用下面的语句,我们可以直接查看程序中所有的变量的值:
  echo ss_as_string($GLOBALS);
  3. 控制Log信息的函数
  调试PHP程序的另外一种重要的方法就是查看Log信息。如果能够方便地控制Log信息的级别以及Log信息的显示内容,将会给程序调试带来更多的便利。下面的几个函数可以方便地实现这个功能。
  $ss_log_level = 0;
  $ss_log_filename = /tmp/ss-log;
  $ss_log_levels = array(
  NONE => 0,
  ERROR => 1,
  INFO => 2,
  DEBUG => 3);
  function ss_log_set_level ($level = ERROR) {
  global $ss_log_level;
  $ss_log_level = $level;
  }
  function ss_log ($level, $message) {
  global $ss_log_level, $ss-log-filename;
  if ($ss_log_levels[$ss_log_level]   // 不显示Log信息
  return false;
  }
  $fd = fopen($ss_log_filename, "a+");
  fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");
  fclose($fd);
  return true;
  }
  function ss_log_reset () {
  global $ss_log_filename;
  @unlink($ss_log_filename);
  }
  在上面的函数中,有四个Log级别变量。运行PHP程序时,只有当Log的级别低于预设的级别值时,Log信息才可以被记录和显示出来。例如,在程序中加入如下的一条语句:
  ss_log_set_level(INFO);
  那么,运行PHP程序时,只有ERROR和INFO级别的LOG信息才能被记录和显示出来,DEBUG级的信息则被忽略了。除此之外,我们还可以设定显示的信息内容,其语句如下:
  ss_log(ERROR, "testing level ERROR");
  ss_log(INFO, "testing level INFO");
  ss_log(DEBUG, "testing level DEBUG");
  你也可以随时使用下面的语句清空LOG信息:
  ss_log_reset();
  4.速度测试函数

    为了优化代码,我们需要一种可以测试代码运行时间的方法,从而来选择最优的代码。下面的函数可以测试运行代码所需的时间:
  function ss_timing_start ($name = default) {
  global $ss_timing_start_times;
  $ss_timing_start_times[$name] = explode( , microtime());
  }
  function ss_timing_stop ($name = default) {
  global $ss_timing_stop_times;
  $ss_timing_stop_times[$name] = explode(, microtime());
  }
  function ss_timing_current ($name = default) {
  global $ss_timing_start_times, $ss_timing_stop_times;
  if (!isset($ss_timing_start_times[$name])) {
  return 0;
  }
  if (!isset($ss_timing_stop_times[$name])) {
  $stop_time = explode(, microtime());
  }
  else {
  $stop_time = $ss_timing_stop_times[$name];
  }
  $current = $stop_time[1] - $ss_timing_start_times[$name][1];
  $current += $stop_time[0] - $ss_timing_start_times[$name][0];
  return $current;
  }
  现在可以轻松地检查任何一段代码的执行时间了,甚至我们可以同时使用多个计时器,只需在使用上述的几个函数时设定不同的参数作为计时器的名称就可以了。
  5.调试和优化数据库的操作
  对于数据库来说,运行速度是至关重要的。尽管很多书籍和文章都讲授了一些快速运行数据库的方法,但是所有的方法都必须经过实践的检验。下面我们将把PHPLib函数库中的query()函数和上面介绍的几个函数综合起来编写成新的query()函数,和原先的函数相比,这个函数增加了运行时间的监测功能。
  function query($Query_String, $halt_on_error = 1) {
  $this->connect();
  ss_timing_start();
  $this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
  ss_timing_stop();
  ss_log(INFO, ss_timing_current(). Secs - .$Query_String);
  $this->Row  = 0;
  $this->Errno = mysql_errno();
  $this->Error = mysql_error();
  if ($halt_on_error && !$this->Query_ID) {
  $this->halt("Invalid SQL: ".$Query_String);
  }
  return $this->Query_ID;
  }(未完待续)

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄) 11 최고의 PHP URL 쇼트너 스크립트 (무료 및 프리미엄) Mar 03, 2025 am 10:49 AM

종종 키워드와 추적 매개 변수로 혼란스러워하는 긴 URL은 방문자를 방해 할 수 있습니다. URL 단축 스크립트는 솔루션을 제공하여 소셜 미디어 및 기타 플랫폼에 이상적인 간결한 링크를 만듭니다. 이 스크립트는 개별 웹 사이트 a에 유용합니다

Instagram API 소개 Instagram API 소개 Mar 02, 2025 am 09:32 AM

Instagram은 2012 년 Facebook에서 유명한 인수에 이어 타사 사용을 위해 두 개의 API 세트를 채택했습니다. Instagram Graph API 및 Instagram Basic Display API입니다. 개발자는

Laravel의 플래시 세션 데이터로 작업합니다 Laravel의 플래시 세션 데이터로 작업합니다 Mar 12, 2025 pm 05:08 PM

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

Laravel Back End : Part 2, React가있는 React 앱 구축 Laravel Back End : Part 2, React가있는 React 앱 구축 Mar 04, 2025 am 09:33 AM

이것은 Laravel 백엔드가있는 React Application을 구축하는 데있어 시리즈의 두 번째이자 마지막 부분입니다. 이 시리즈의 첫 번째 부분에서는 기본 제품 목록 응용 프로그램을 위해 Laravel을 사용하여 편안한 API를 만들었습니다. 이 튜토리얼에서는 Dev가 될 것입니다

Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Laravel 테스트에서 단순화 된 HTTP 응답 조롱 Mar 12, 2025 pm 05:09 PM

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> ​​'Hello World', 'github.com'=> ​​[ 'foo'=> 'bar'], 'forge.laravel.com'=>

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법 Mar 14, 2025 am 11:42 AM

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트 Mar 13, 2025 pm 12:08 PM

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

2025 PHP 상황 조사 발표 2025 PHP 상황 조사 발표 Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Survey는 현재 PHP 개발 동향을 조사합니다. 개발자와 비즈니스에 대한 통찰력을 제공하는 프레임 워크 사용, 배포 방법 및 과제를 탐색합니다. 이 조사는 현대 PHP Versio의 성장을 예상합니다

See all articles