سرفصل‌های آموزشی
آموزش PHP
آشنایی با تاریخچهٔ شکل‌گیری زبان برنامه‌نویسی PHP

آشنایی با تاریخچهٔ شکل‌گیری زبان برنامه‌نویسی PHP

اولین نسخه از زبان PHP در سال 1994 توسط Rasmus Lerdorf نوشته شد (در ابتدا، PHP مخفف واژگان Personal Home Page بود). در واقع، این برنامه‌نویس دانمارکی یکسری CGI را با استفاده از زبان Perl نوشت که این وظیفه را داشتند تا رزومهٔ او را در وب‌سایت شخصی‌اش در معرض دید دیگران قرار داده و همچنین ترافیک وب‌سایت شخصی او را نمایش دهند که بعدها این دستورات با استفاده از زبان C بازنویسی شدند (البته نسخه‌یی که امروزه ما استفاده می‌کنیم با آنچه در سال 1994 طراحی شده بود کاملاً متفاوت است). 

    نکته

اصطلاح CGI مخفف واژگان Common Gateway Interface است. در واقع، CGI به منزلهٔ استانداردی است که با استفاده از آن، وب سرورها می توانند ایجاد محتوای صفحات وب را مدیریت کنند.

اطلاعیهٔ شمارهٔ ۱ انتشار زبان PHP در سال 1995 در گروه خبری یوزنت به شرح زیر است:

From: rasmus@io.org (Rasmus Lerdorf)
Subject: Announce: Personal Home Page Tools (PHP Tools)
Date: 1995/06/08
Message-ID: <3r7pgp$aa1@ionews.io.org>#1/1
organization: none
newsgroups: comp.infosystems.www.authoring.cgi
Announcing the Personal Home Page Tools (PHP Tools) version 1.0.
These tools are a set of small tight cgi binaries written in C.
They perform a number of functions including:
. Logging accesses to your pages in your own private log files
. Real-time viewing of log information
. Providing a nice interface to this log information
. Displaying last access information right on your pages
. Full daily and total access counters
. Banning access to users based on their domain
. Password protecting pages based on users' domains
. Tracking accesses ** based on users' e-mail addresses **
. Tracking referring URL's - HTTP_REFERER support
. Performing server-side includes without needing server support for it
. Ability to not log accesses from certain domains (ie. your own)
. Easily create and display forms
. Ability to use form information in following documents

Here is what you don't need to use these tools:
. You do not need root access - install in your ~/public_html dir
. You do not need server-side includes enabled in your server
. You do not need access to Perl or Tcl or any other script interpreter
. You do not need access to the httpd log files

The only requirement for these tools to work is that you have the ability to execute your own cgi programs. Ask your system administrator if you are not sure what this means.

The tools also allow you to implement a guestbook or any other form that needs to write information and display it to users later in about 2 minutes.

The tools are in the public domain distributed under the GNU Public License. Yes, that means they are free!

For a complete demonstration of these tools, point your browser at: http://www.io.org/~rasmus

--
Rasmus Lerdorf
rasmus@io.org
http://www.io.org/~rasmus

آنچه از اطلاعیهٔ فوق پیدا است، این می‌باشد که توسعه‌دهندگان در آن سال‌ها چه دغدغه‌هایی داشته‌اند؛ چیزهایی همچون صفحاتی برای عرضه به گروه‌های خاصی از کاربران، ساخت فرم‌، دسترسی به دیتای ذخیره شده در دیتابیس و نمایش آن در صفحات و … جزو مسائلی بوده‌اند که آقای Lerdorf را متقاعده کرده بود تا این زبان را ابداع کند.

همان‌طور که پیش از این هم اشاره کردیم، Business Logic یا به نوعی هستهٔ این زبان با استفاده از زبان برنامه‌نویسی C نوشته شده اما ساختار زبان به گونه‌یی است که توسعه‌دهندگان قادر به توسعهٔ این زبان با نوشتن ماژول‌هایی به زبان C می باشند.

در تکمیل تاریخچهٔ نسخه ۱ این زبان، بایستی گفت که آقای Lerdorf روی پروژهٔ نسبتاً بزرگی برای دانشگاه تورنتو کار می‌کرد که این پروژه نیاز به ابزارهایی داشت تا بتوانند داده‌ها را از جاهای مختلفی جمع‌آوری کرده سپس در قالب یک صفحهٔ تحت وب نمایش دهد. وی از همان نسخه‌های ابتدایی زبان PHP برای این پروژه استفاده کرد اما باتوجه به اینکه این نسخه از زبان PHP برای پروژهٔ نسبتاً بزرگی همچون پروژهٔ دانشگاه تورنتو آن‌طور که باید و شاید کارآمد نبود، تغییراتی می‌بایست در وب سرور صورت می‌پذیرفت (وب سرور نام نرم‌افزاری است که ارتباط مابین کاربر و سرور را برقرار می‌سازد).

ابداع وب سرور آپاچی

وب سروری که در آن زمان برای این پروژه استفاده شده بود NCSA نام داشت و تغییرات صورت گرفته در آن، مشکلات این زبان را رفع کرده بود اما این کار یک مشکل بزرگ داشت! اگر کسی قصد داشت از این زبان برای طراحی صفحات وب استفاده کند، حتماً می‌بایست از نسخهٔ تغییر پیدا کردهٔ این وب سرور استفاده می‌کرد.

در همین اثنی، وب سروری به نام Apache (آپاچی) به مرور در میان دولوپرها محبوبیت پیدا می‌کرد و نکتهٔ جالب اینکه این نرم‌افزار دست توسعه‌دهندگان را باز می‌گذاشت تا راحت‌تر بتوانند زبان PHP را روی سرور اجرا کنند.

آقای Lerdorf سپس قابلیت‌های کار با فرم‌ها در صفحات وب و ارتباط با پایگاه داده را نیز به این زبان اضافه نمود که در نهایت چیزی تحت عنوان Personal Home Page/Forms Interpreter یا به طور خلاصه PHP/FI نام گرفت که چنانچه بخواهیم آن را ترجمه کنیم می‌توانیم معادلی همچون «تحلیلگر فرم‌ها و صفحات وب‌سایت شخصی» را برای آن در نظر بگیریم. در حقیقت او به دنبال این مسئله بود تا بتواند به راحتی وب‌سایت شخصی خود را به صورت دینامیک آپدیت نگاه دارد. با تغییراتی که در این زبان صورت گرفت، در نهایت در سال 1996 نسخهٔ (PHP 2.0 (PHP/FI با اطلاعیه‌یی به شرح زیر به دنیا عرضه شد:

From: rasmus@madhaus.utcs.utoronto.ca (Rasmus Lerdorf)
Subject: ANNOUNCE: PHP/FI Server-side HTML-Embedded Scripting Language
Date: 1996/04/16
Newsgroups: comp.infosystems.www.authoring.cgi

PHP/FI is a server-side HTML embedded scripting language. It has built-in access logging and access restriction features and also support for embedded SQL queries to mSQL and/or Postgres95 backend databases.

It is most likely the fastest and simplest tool available for creating database-enabled web sites.

It will work with any UNIX-based web server on every UNIX flavour out
there. The package is completely free of charge for all uses including
commercial.

Feature List:
. Access Logging
 Log every hit to your pages in either a dbm or an mSQL database.
 Having hit information in a database format makes later analysis easier.
. Access Restriction
 Password protect your pages, or restrict access based on the refering URL plus many other options.
. mSQL Support
  Embed mSQL queries right in your HTML source files
. Postgres95 Support
  Embed Postgres95 queries right in your HTML source files
. DBM Support
  DB, DBM, NDBM and GDBM are all supported
. RFC-1867 File Upload Support
  Create file upload forms
. Variables, Arrays, Associative Arrays
. User-Defined Functions with static variables + recursion
. Conditionals and While loops
  Writing conditional dynamic web pages could not be easier than with the PHP/FI conditionals and looping support
. Extended Regular Expressions
  Powerful string manipulation support through full regexp support
. Raw HTTP Header Control
  Lets you send customized HTTP headers to the browser for advanced features such as cookies.
. Dynamic GIF Image Creation
  Thomas Boutell's GD library is supported through an easy-to-use set of tags.

It can be downloaded from the File Archive at: <URL:http://www.vex.net/php>
--
Rasmus Lerdorf
rasmus@vex.net

این اولین باری بود که اصطلاح Scripting Language مورد استفاده قرار گرفت. زبان‌های Scripting با زبان‌های Programming تاحدودی فرق دارند. زبان‌های برنامه‌نویسی -مثل جاوا- فضایی برای برنامه‌نویس ایجاد می‌کنند که یک برنامه را با سینتکسی خاص نوشته سپس سورس‌کد اصطلاحاً کامپایل می‌شود؛ یعنی از کدها به زبان ماشین -یا همان 0 و 1 که توسط سیستم قابل‌فهم هستند- تبدیل می‌شوند و در نهایت برنامه اجرا می‌شود. اما برنامه‌های نوشته شده با زبان‌های اسکریپتینگ هیچ نیازی به کامپایل شدن ندارند. برنامه به محض اجرا، خط به خط اصطلاحاً Interprete (اینترپریت یا تفسیر) می‌شود (برای کسب اطلاعات بیشتر در این باره، به آموزش آیا PHP یک زبان Scripting است یا Programming؟ مراجعه نمایید.)

در اواسط سال 1997، نسخهٔ دوم زبان PHP توانسته بود توسعه‌دهندگان قابل‌توجهی را به خود جلب کند اما کماکان مشکلاتی در زمینهٔ Parsing Engine (موتور پردازشگر) این زبان وجود داشت. علاوه بر این، پی‌اچ‌پی صرفاً توسط یک دولوپر توسعه می‌یافت و فقط چند نفری بودند که در افزودن بخش‌هایی به این زبان مشارکت داشتند.

در همین زمان بود که Zeev Suraski و Andi Gutmans در تلاویو اسرائیل داوطلب شدند تا Parsing Engine این زبان را بازنویسی کنند که در نهایت قرار شد این تغییرات در نسخهٔ 3 اعمال شوند و در سال 1998 بخش‌هایی از این زبان را بازنویسی کرده و آن را تحت عنوان PHP عرضه کردند با این تفاوت که PHP مخفف واژگان PHP: Hypertext Preprocessor شد که حرف P اول به همان واژگان Personal Home Page اشاره دارد، حرف H به واژهٔ Hypertext و حرف P آخر هم به Preprocessor. به طور کلی منظور از Hypertext Preprocessor این است که زبان پی‌اچ‌پی دیتا را پیش از آنکه در قالب اچ‌تی‌ام‌ال در معرض دید کاربر قرار بگیرد، پردازش می‌کند. به عبارت دیگر، نام جدید این زبان PHP: Hypertext Preprocessor شد (تصویر سمت چپ مربوط به Rasmus Lerdorf، تصویر وسط مربوط به Andi Gutmans و تصویر سمت راست مربوط به Zeev Suraski است):

 Rasmus Lerdorf

علاوه بر این دو دولوپر اسرائیلی، افراد دیگری هم پیدا شدند که تمایل خود را برای مشارکت در توسعهٔ بخش‌های دیگر زبان پی‌اچ‌پی نشان دادند و این شد که زبان برنامه‌نویسی پی‌اچ‌پی از یک پروژهٔ تک نفره،‌ به یک پروژهٔ اپن‌سورس واقعی با چندین نفر توسعه‌دهنده از سراسر دنیا مبدل شد. در سال 1998 بیانیه‌یی برای انتشار نسخهٔ PHP 3.0 منتشر شد که متن آن به این شرح است:

June 6, 1998 -- The PHP Development Team announced the release of PHP 3.0, the latest release of the server-side scripting solution already in use on over 70,000 World Wide Web sites.

This all-new version of the popular scripting language includes support for all major operating systems (Windows 95/NT, most versions of Unix, and Macintosh) and web servers (including Apache, Netscape servers, WebSite Pro, and Microsoft Internet Information Server).

PHP 3.0 also supports a wide range of databases, including Oracle, Sybase, Solid, MySQ, mSQL, and PostgreSQL, as well as ODBC data sources.

New features include persistent database connections, support for the SNMP and IMAP protocols, and a revamped C API for extending the language with new features.

"PHP is a very programmer-friendly scripting language suitable for
people with little or no programming experience as well as the
seasoned web developer who needs to get things done quickly. The
best thing about PHP is that you get results quickly," said Rasmus Lerdorf, one of the developers of the language.

"Version 3 provides a much more powerful, reliable, and efficient
implementation of the language, while maintaining the ease of use and
rapid development that were the key to PHP's success in the past,"
added Andi Gutmans, one of the implementors of the new language core.

"At Circle Net we have found PHP to be the most robust platform for
rapid web-based application development available today," said Troy
Cobb, Chief Technology Officer at Circle Net, Inc. "Our use of PHP
has cut our development time in half, and more than doubled our client
satisfaction. PHP has enabled us to provide database-driven dynamic
solutions which perform at phenomenal speeds."

PHP 3.0 is available for free download in source form and binaries for
several platforms at http://www.php.net/.

The PHP Development Team is an international group of programmers who
lead the open development of PHP and related projects.

For more information, the PHP Development Team can be contacted at
core@php.net.

در سال 2000، آقایان Zeev Suraski و Andi Gutmans شرکتی تحت عنوان Zend تأسیس کردند و در آن شرکت هسته اصلی پی‌اچ‌پی را بازنویسی کرده و تغییرات گسترده‌ای در آن ایجاد کردند که این تغییرات در قالب چیزی به نام Zend Engine شکل گرفت و آن را در همین سال در قالب نسخهٔ 4.0 روانهٔ بازار کردند. نسخهٔ PHP 4.0 در 22 ماه مه سال 2000، با تلاش توسعه‌دهندگان بسیاری و صرف زمان قابل‌توجهی به دنیا عرضه شد.

در سال 2004، نسخه 5 از این زبان به دنیا عرضه شد که دارای ویژگی‌های بسیاری بود که از آن جمله می‌توان به برنامه‌نویسی شیئ‌گرایی (OOP) و ارتباط بهتر با پایگاه داده‌ها اشاره کرد (در واقع، هر کدام از نسخه‌های پی‌اچ‌پی دارای آپدیت‌هایی هم می‌باشند؛ مثلاً نسخهٔ 5.2 اما با توجه به اینکه توضیح پیرامون این آپدیت‌ها صرفاً به طولانی‌تر شدن تاریخچه منجر خواهد شد، از توضیح پیرامون این مسئله خودداری خواهیم کرد). به طور کل، نسخهٔ ۵ زبان PHP نقطهٔ عطفی برای این زبان محسوب می‌شود چرا به یک باره قابلیت‌های بیشماری به این زبان اضافه گردید.

چرا زبان PHP نسخهٔ ۶ ندارد؟

یکی از چیزهای جالب در مورد نسخه‌های مختلف زبان پی‌اچ‌پی این است که نسخهٔ PHP 6.0 این زبان هرگز عرضه نشد و به یک باره پس از نسخهٔ PHP 5.6، نسخهٔ PHP 7.0 به بازار عرضه شد. یکی از خصیصه‌های اصلی PHP 6.0، پشتیبانی از Unicode بود. به عبارت دیگر، این نسخه از پی‌اچ‌پی قرار بود تا کاراکترهای کلیهٔ زبان‌های زندهٔ دنیا را ساپورت کند اما طراحان این زبان نتوانستند آن‌طور که باید و شاید این نوع پشتیبانی را به زبان پی‌اچ‌پی بیفزایند و تا حدودی به برند این نسخه از زبان برنامه‌نویسی پی‌اچ‌پی لطمه خورد و از همین روی، توسعهٔ PHP 6.0 متوقف شد!

در دسامبر سال 2015، نسخهٔ PHP 7.0.0 به دنیا عرضه شد. پس از عرضهٔ PHP 5 در سال 2004، نسخهٔ 7 زبان برنامه‌نویسی پی‌اچ‌پی دربرگیرندهٔ مهم‌ترین تغییرات اعمال شده در این زبان است که از آن جمله می‌توان به عملکرد بسیار بالا، کاهش استفاده از حافظه و بسیاری ویژگی‌های جدید اشاره کرد. به یمن استفاده از Zend Engine 3.0، در وب اپلیکیشن‌های نوشته شده با پی‌اچ‌پی نسخهٔ 7 شاهد سرعتی تا 2x و کاهش استفاده از حافظه به میزان 50% خواهیم بود که در نهایت این امکان در اختیار توسعه‌دهندگان قرار می‌گیرد تا بدون ارتقاء سخت‌افزار، بتوانند پرفورمنس وب اپلیکیشن‌های خود را بهبود بخشند.

online-support-icon