PHP 데이터 개체 사용

  • 필요한 지식 : PHP와 SQL에 대한 지식이 유용합니다.
  • 요구 사항 : PHP가로드 된 웹 서버 (예 : Apache) 및 PDO 연결이 가능한 관계형 데이터베이스 관리 시스템 (예 : MySQL) ODBC 및 Doctrine 2는 선택적 추가 항목입니다.
  • 프로젝트 시간 : 1-3 시간 (또는 그 이상, 우연한 학습 경로 및 능력에 따라 다름)
  • 소스 파일

이 기사는 231 호 .net 잡지의.

오늘날 동적 웹 사이트 및 애플리케이션 개발은 정적 웹 사이트 생성보다 더 일반적으로 보이며 동적 개발에서는 데이터를 저장해야합니다.

PHP 언어와 함께 사용되는 인기있는 데이터베이스 관리 시스템은 MySQL 데이터베이스이며 Microsoft SQL, PostgreSQL 및 Oracle도 상당히 일반적입니다. PHP 개발자 그룹은 처음에 다음과 같은 데이터베이스 시스템 특정 기능을 사용하여 PHP와 데이터베이스 시스템 간의 연결을 용이하게했습니다.



MySQL : 리소스 mysql_query (문자열 $ query [, 리소스 $ link_identifier])
Microsoft SQL : 혼합 mssql_query (문자열 $ query [, 리소스 $ link_identifier [,
int $ batch_size = 0]])
PostgreSQL : 리소스 pg_query ([resource $ connection], string $ query)
Oracle 데이터베이스 : bool oci_execute (resource $ statement [, int $ mode = OCI_
COMMIT_ON_SUCCESS])



500 개 미만의 비디오 편집을위한 최고의 노트북

정의에서 볼 수 있듯이 표준화 된 형식이 없으므로 데이터베이스 시스템을 Oracle에서 MySQL로 변경해야하는 경우 코드를 검토하고 데이터베이스에 연결하는 방법을 변경해야합니다. PHP의 데이터베이스 연결에 대해 배우는 측면에서도 가시가 있습니다. 예를 들어 PostgreSQL에서 Microsoft SQL로 지식을 이전 할 수는 없습니다.

01. PHP 데이터 객체 (PDO) 철학

고맙게도 데이터베이스 연결 구제자가 PHP에 존재합니다. 이것은 PHP 데이터 객체를 의미하는 세 글자 약어 PDO의 형태입니다. PDO 라이브러리의 개념은 SQL을 사용하여 쿼리 할 수있는 모든 관계형 데이터베이스 관리 시스템 (RDBMS)에 연결할 수있는 표준화 된 기반을 제공한다는 것입니다.



운이 좋으면 PDO 생성 스크립트가 위와 같이 데이터베이스에 유효한 테이블을 생성해야합니다.

운이 좋으면 PDO 생성 스크립트가 위와 같이 데이터베이스에 유효한 테이블을 생성해야합니다.

작성 당시에는 CUBRID, Firebird, Interbase, IBM DB2, Informix, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, 4D 및 ODBC를 통해 연결할 수있는 모든 데이터베이스가 포함됩니다.

변경 사항에 대한 간단한 개념적 예를 들어 보면 이전에 다음과 같은 내용을 보았습니다.

_query ($ sql);



이제 다음과 같은 표준화 된 함수 집합을 볼 수 있습니다.

$ conn-> query ($ sql);

하지만 지금은 충분한 이론입니다.이 강력한 라이브러리가 실제로 작동하는 것을 살펴 보겠습니다! PDO에는 두 가지 고유 한 측면이 있습니다. 첫 번째는 연결 (분명히 필수 요소 임)이고 두 번째 측면은 쿼리 요소입니다.

02. 데이터베이스 관리 시스템에 연결

데이터를 쿼리하기 전에 이미 설치 및 설정 한 데이터베이스 관리 시스템에 연결해야합니다. 첫 번째 예에서는 localhost에서 실행중인 MySQL 데이터베이스에 연결합니다.

PDO ( 'mysql : host = localhost; dbname = yourdbname', 'username', 'password');

PostgreSQL 데이터베이스에 연결하는 것과 비교해 보겠습니다.

w PDO ( 'pgsql : host = localhost; dbname = yourdbname', 'username', 'password');

연결은 동일한 기능을 사용하는 첫 번째 예 덕분에 표준화되고 두 번째 예는 표준화 된 데이터 소스 이름 (DSN) 시스템을 사용합니다. 한 데이터베이스 관리 시스템에서 다른 데이터베이스 관리 시스템으로 전환하려는 경우 얼마나 쉬운 지 알 수 있습니다.

Drupal 7에는 데이터베이스 추상화 계층 뒤에 PDO가 있습니다. 이들에 대한 공식 Drupal 문서는 통합에 대해 자세히 알아볼 수있는 좋은 방법입니다.

Drupal 7에는 데이터베이스 추상화 계층 뒤에 PDO가 있습니다. 이들에 대한 공식 Drupal 문서는 통합에 대해 자세히 알아볼 수있는 좋은 방법입니다.

03. 결과 조회 및 읽기

데이터 쿼리는 처음에는 데이터를 만드는 것보다 더 흥미 롭습니다.이 자습서는 SQL이 아닌 데이터 연결에 대한 자습서이므로 나중에 쿼리를 바로 시작하고 생성, 삽입, 업데이트 및 삭제를 방문합니다.

다음과 같은 테이블이 있다고 가정하겠습니다. 프로필 , 가상 웹 응용 프로그램 사용자에 대한 다양한 세부 정보를 나열합니다. 예를 들어 PDO를 통해 SQL에서 빠른 프로필 가져 오기를 실행 한 다음 간단히 전체 이름을 에코 해 보겠습니다. 쿼리 함수를 반복자 (메모리에 배열의 현재 요소 (또는이 경우 결과 집합)에 대한 포인터를 저장하는 함수)로 사용하는 방법에 유의하십시오. 이것이 a와 결합 될 때 각각 loop 행에 액세스하는 빠르고 쉬운 방법을 허용합니다.

$ conn = 새 $ conn = 새 $ conn = 새 $ conn = neforeach ($ conn-> query ( 'SELECT * FROM profile') as $ row) echo
$ row [ 'fullname'];

포토샵 CS6에서 페인트하는 방법

물론 이것은 빠르고 쉽습니다. 그러나 모든 행을 가져오고 싶지는 않습니다. 따라서 변수 주입을 통해 몇 가지 조건문을 추가하겠습니다. 여기에서는 쿼리를 준비하고 변수를 삽입하는보다 강력한 쿼리 방법을 사용합니다.

$ query = $ conn-> prepare ( 'SELECT * FROM profile WHERE username =
: 사용자 이름 LIMIT 1 ');
$ query-> bindParam ( ': 사용자 이름', 'knightofarcadia');
$ query-> execute ();
$ profile = $ query> fetch (PDO :: FETCH_ASSOC);
echo $ profile [ 'fullname'];

위의 코드는 프로필 테이블 검색을 사용자 이름이있는 하나의 프로필로 제한합니다. 기사단 . 첫 번째 예와 마찬가지로 그 뒤에 전체 이름을 인쇄하지만 데이터가 전달 된 전체 XHTML 페이지를 구축하는 것을 확실히 상상할 수 있습니다.

PHP Data Objects 라이브러리는 Facebook의 HipHop Engine을 지원하여 웹 서버의 CPU 사용량을 최대 50 %까지 줄일 수 있습니다.

PHP Data Objects 라이브러리는 Facebook의 HipHop Engine을 지원하여 웹 서버의 CPU 사용량을 최대 50 %까지 줄일 수 있습니다.

그러나 쿼리에서 둘 이상의 행이 반환 될 수 있으므로 다음을 사용할 수 있습니다. 술책 메서드를 반복자로 사용합니다. 여기에 여러 행 결과 집합을 반환하는 다른 쿼리가 있습니다.

$ query = $ conn-> prepare ( 'SELECT * FROM profile WHERE hometown = : hometown');
$ query-> bindParam ( ': 고향', 'Wessex');
$ query-> execute ();
foreach ($ query-> fetch (PDO :: FETCH_ASSOC) as $ row) {
echo $ row [ 'fullname'];
}

위의 인스턴스는 프로필 데이터베이스를 검색하고 고향 로 설정 Wessex . 그만큼 술책 그런 다음 메서드를 사용하여 이러한 모든 결과를 반환하고 간단한 예를 들어 전체 이름을 화면에 인쇄 할 수 있습니다.이 작업은 더 복잡한 XHTML 페이지 작업 일 수 있습니다.

04. 만들기

이제 SQL에서 데이터베이스 관리 시스템으로 직접 수행되는 데이터베이스 구조의 생성을 옹호하지만 PDO에서 준비한 SQL을 사용하여 데이터베이스 테이블을 동적으로 생성 할 수 있습니다.

$ createsql = $ conn-> prepare ( 'CREATE TABLE profiles (username VARCHAR (64), fullname VARCHAR (128), hometown VARCHAR (128)'));
$ conn-> query ($ createsql);

기억하십시오 질문 이 인스턴스의 개체는 생성 명령이므로 값을 반환하지 않습니다. 이미 언급했듯이 웹 응용 프로그램에서 이러한 방식으로 테이블을 동적으로 생성하는 것을 피하는 것이 좋습니다.하지만 '한 번만 실행'웹 기반 시스템 (예 : 서버 웹 응용 프로그램 설치 프로그램)에서 사용되는 것을 상상할 수 있습니다. 웹 기반이 아닌 간단한 서버 스크립트에서도 마찬가지입니다.

이 튜토리얼에서 사용 된 예제 PHP 코드에 해당하는 객체 모델은 다음과 같습니다.

이 튜토리얼에서 사용 된 예제 PHP 코드에 해당하는 객체 모델은 다음과 같습니다.

05. 삽입

데이터 삽입은 동적 시스템, 특히 협업 및 협력을 지향하는 최신 Web 2.0 및 Web 3.0 시스템에서 매우 중요합니다. 사용자가 데이터를 저장하고 공유 할 수없는 경우 어떻게 협업 할 수 있습니까? 따라서 일부 데이터를 프로필 테이블에 삽입 해 보겠습니다.

$ insertsql = 'INSERT INTO 프로필 (사용자 이름, 전체 이름, 고향) 값 (: 사용자 이름, : 전체 이름, : 고향)';
$ query = $ conn-> prepare ($ insertsql);
$ query-> bindParam ( ': 사용자 이름', 'knightofarcadia');
$ query-> bindParam ( ': fullname', 'Arthur Pendragon');
$ query-> bindParam ( ': 고향', 'Wessex');
$ query-> execute ();

처럼 질문 테이블 생성 기능,이 실행하다 함수는 데이터베이스에 대한 삽입 명령이기 때문에 값을 반환하지 않습니다. 또한 SQL에 변수를 삽입하기 위해 '준비, 바인딩 및 실행'기술을 사용하고 있음을 알 수 있습니다.

06. 업데이트

삽입 및 삭제와 같은 업데이트는 협업 시스템에서 중요하며 PDO는이를 쉽게 만듭니다. 업데이트는 삽입과 매우 유사합니다.

$ query = $ conn-> prepare ( '업데이트 프로파일 SET fullname = : fullname WHERE
사용자 이름 = : 사용자 이름 ');
$ query-> bindParam ( ': fullname', 'Arthur Pendragoon');
$ query-> bindParam ( ': 사용자 이름', 'knightofarcadia');
$ query-> execute ();

위의 코드 블록은 사용자의 전체 이름을 대체 할뿐 삽입 코드와 거의 동일하다는 것을 알 수 있습니다. 조건부 결과 (이 경우 사용자 이름)를 바인딩하고 설정 결과 (이 예에서는 새 전체 이름)를 바인딩합니다.

정규화 된 다 대다 관계의 간단한 관계형 데이터베이스 모델 – 대략적인 구조 Doctrine이 ORM 정의에서 구축 할 유형

정규화 된 다 대다 관계의 간단한 관계형 데이터베이스 모델 – 대략적인 구조 Doctrine이 ORM 정의에서 구축 할 유형

07. 삭제

마지막으로 삽입이나 업데이트보다 더 간단한 프로세스 인 삭제에 대해 간단히 살펴 보겠습니다.

만화책 아이디어를 판매하는 방법

$ query = $ conn-> prepare ( 'DELETE FROM profiles WHERE'사용자 이름 '=
:사용자 이름 );
$ query-> bindParam ( ': 사용자 이름', 'knightofarcadia');
$ query-> execute ();

위의 SQL은 사용자 이름과 일치하는 프로필을 단순히 삭제합니다. 사용자 이름을 조건부 변수에 바인딩하기 만하면됩니다.

08. 스위칭 데이터베이스 관리 시스템

이제 데이터베이스 테이블 구조가 동일하고 독점 SQL 시스템 내에서 표준화되지 않은 것을 사용하지 않는 경우 데이터 소스 이름을 RDBMS (초기 예제 Microsoft SQL Server)에서 가리 키도록 간단히 변경할 수 있습니다. 다른 것 (예 : IBM DB2). 그때부터 수행 한 전체 코드는 SQL을 변경할 필요없이 작동합니다.

다음과 같은 연결 문자열로 시작합니다.

$ conn = new PDO ( 'sqlsrv : server = localhost; database = yourdbname',
'사용자 이름',
'암호');
$ conn = new PDO ( 'ibm : DRIVER = {IBM DB2 ODBC DRIVER}; DATABASE = yourd
bname; HOSTNAME = localhost; PORT = 56789; PROTOCOL = TCPIP; ','사용자 이름 ',
'암호');

PDO 라이브러리의 또 다른 주요 사용자는 Wikipedia Foundation의 모든 프로젝트를 지원하는 앱인 MediaWiki입니다.

PDO 라이브러리의 또 다른 주요 사용자는 Wikipedia Foundation의 모든 프로젝트를 지원하는 앱인 MediaWiki입니다.

09. 거래

데이터베이스 측면에서 트랜잭션은 나중에 일괄 처리 할 쿼리 집합을 저장하는 곳입니다. PDO는 트랜잭션을 구축하기위한 메커니즘을 제공하지만 데이터베이스 관리 시스템에 크게 의존하기 때문에 PDO 트랜잭션은 PDO가 지원하는 RDBMS의 하위 집합에 연결할 때만 작동합니다. 트랜잭션을 지원하지 않는 RDBMS에서 트랜잭션을 시작하려고하면 다소 불쾌한 PDO 트랜잭션이 발생합니다. 이제 몇 가지 거래 코드를 분석해 보겠습니다.

{
$ conn-> beginTransaction ();
$ insertsql = $ conn-> prepare ( 'INSERT INTO 프로필 (사용자 이름, 전체 이름,
고향) VALUES ( 'wilfred', 'Wilfred Jones', 'Scarborough') ');
$ deletesql = $ conn-> prepare ( 'DELETE FROM profiles WHERE username =
'사용자 이름'' );
$ conn-> exec ($ insertsql);
$ conn-> exec ($ deletesql);
$ conn-> commit ();
} catch (예외 $ e) {
$ conn-> rollBack ();
// 다음으로 액세스 할 수있는 메시지 : $ e-> getMessage ();
}

먼저 try-catch를 시작하여 트랜잭션 지원이없는 RDBMS에 연결하려고 할 때 얻을 수있는 잘못된 예외를 포함하여 모든 잘못된 예외를 포착 할 수 있습니다. 우리는 거래를 시작합니다 $ conn-> beginTransaction () 쿼리 실행을 계속 구축하기 전에는 데이터베이스에서 완전히 실행되지 않습니다. $ conn-> commit () 함수가 실행되고 효율적인 직렬 시퀀스로 수행됩니다. 즉, 데이터베이스에 영향을주지 않고 실행 명령간에 다양한 다른 PHP 프로세스를 수행 할 수 있습니다.

데이터베이스가 트랜잭션을 지원하지 않는 것으로 확인되면 트랜잭션이 발생하지 않습니다. 다른 예외가 발생하면 다음을 실행합니다. $ conn-> rollBack () , 트랜잭션에 의해 변경된 사항을 롤백합니다. 트랜잭션 지원 RDBMS에 연결할 때 PDO는 각 exec 명령 자체가 자체 커밋 된 트랜잭션 인 '자동 커밋'상태가됩니다. 그러나 안전한 방식으로 작업하고 싶다면 언제든지 사용할 수 있습니다. beginTransaction , 일괄 커밋 및 롤백 기능에 액세스 할 수 있습니다.

10. PDO 문제

PDO를 사용하는 데있어서 PHP 관점에서는 실제 문제가 없습니다. 확장 가능하고 유연하며 연결 ​​가능한 방식으로 많은 시스템과 함께 작동한다는 것을 의미하는 객체 지향입니다. 문제는 대부분의 관계형 데이터베이스 관리 시스템이 SQL 표준화를 따르지만 (따라서 한 시스템에서 다른 시스템으로 전환하는 데 도움이 됨) 많은 시스템이 다른 일반적인 시스템이 아닌 고유 한 구문과 기능을 가지고 있다는 점을 고려할 때 발생합니다.

따라서 한 시스템에서 다른 시스템으로 원활하게 전환하려면 SQL 표준을 따르고 일반적으로 발견되는 기능 만 사용하는 것이 중요합니다. 이를 예시하기 위해 쿼리에서 일반적으로 사용되는 함수가 있습니다. SQL에서 무작위 화를위한 함수를 살펴볼 수 있습니다. 다양한 언어에 대한 기능 사양은 다음과 같습니다.

MySQL : SELECT RAND ([seed]);
MS SQL : SELECT RAND ([seed]);
PostgreSQL : SELECT RANDOM (); (시드를 설정하려면 SETSEED ([seed])를 실행해야합니다.
미리)
Oracle DB : SELECT dbms_random.random FROM dual;
SQLite : SELECT RANDOM ();

따라서이 점을 염두에두고 독점 함수 대신 표준화 된 SQL 기술을 사용할 수 있는지 아니면 PHP 프로 시저를 사용하여 결과를 SQL 쿼리에 삽입 할 수 있는지 확인해야합니다 (무작위 화 예제에서는 열() PHP가 제공하는 기능).

Linux의 gedit 앱은 코드를 수정하는 가장 빠른 방법 중 하나이며 여러 언어에 대한 구문 강조 기능이 있습니다. Doctrine ORM 시스템을 사용합니다.

Linux의 gedit 앱은 코드를 수정하는 가장 빠른 방법 중 하나이며 여러 언어에 대한 구문 강조 기능이 있습니다. Doctrine ORM 시스템을 사용합니다.

11. 예제 별 객체 관계형 매핑

물론 우리는 모델링 세계로 들어가서 추상화를 더 나아갈 수 있습니다. 아니, 우리의 프로젝트를 캣워크에서 전시하는 것이 아니라 데이터베이스 테이블에 평범한 오래된 PHP 객체를 매핑하는 것입니다. PHP 객체에는 객체 지향 모델이 있지만 SQL 데이터베이스에는 관계형 모델이 있기 때문에 문제가 있습니다. 여기에서 ORM (객체 관계형 매핑)이 시작됩니다. 종종 약간의 마법과 약간의 반짝임을 사용하여 객체를 테이블에 매핑 할 수 있습니다.

아마도 ORM의 이점이 무엇인지 묻고 계실 것입니다. 간단히 말해서 데이터베이스 연결이나 SQL 쿼리를 처리 할 필요가 없습니다. PHP 객체와 그 메소드를 직접 사용하기 만하면 ORM 시스템은 백그라운드에서 모든 연결 및 create-read-update-delete 트랜잭션을 처리합니다. PHP 용 ORM 라이브러리가 꽤 많이 있습니다. PdoMap , 추진 좋은 것들 중 일부지만 제가 사용한 최고의 것은 교리 2 – 자체적으로 또는 Symfony, CodeIgniter 또는 Zend와 같은 MVC 설정의 일부로 사용할 수 있다는 이점이 있습니다.

Doctrine 2 및 몇 가지 다른 ORM 시스템을 사용하여 일반적으로 개체 집합과 서로간에 갖는 관계 유형을 정의합니다 (예 : 일대 다, 다 대일, 다 대다). , 속성과 메서드 간의 연결에 대한 특별한 세부 정보가 있습니다. 물론 정규화 된 링크 테이블은 개체 모델과 관련이 없으므로 정의 할 필요가 없습니다. 이 사람이 실행하는 프로세스는 일반적으로 XML 또는 YAML과 같은 사용자 정의 구문을 사용하여 수행되며 Doctrine 2는 PHP 문서 블록 내에서 객체 관계형 정의를 허용합니다. 다음 모델 및 코드는 실제 예제를 설명합니다.

Doctrine Common Collections ArrayCollection을 사용하십시오.
/ ** 회원 설명
* @Entity
* /
class Member {
/ **
* @Id @GeneratedValue
* @Column (유형 = '정수')
* @아니였다
* /
보호 된 $ id;
/ ** @Column (유형 = '문자열')
* @var 문자열
* /
보호 된 $ firstname;
/ ** @Column (유형 = '문자열')
* @var 문자열
* /
보호 된 $ 성;
/ ** @Column (유형 = '문자열')
* @var 문자열
* /
보호 된 $ email;
/ ** 많은 회원이 여러 그룹의 회원이 있습니다.
* @ManyToMany (targetEntity = 'Group')
* @var 그룹 []
** /
보호 된 $ groups;
/ **
* 빌더
* /
public function __construct () {
$ this-> groups = new ArrayCollection ();
// ...
}
// --- 기본 getter 및 setter 예제 --- //
/ ** 구성원의 (내부) ID를 가져옵니다.
* @return int
* /
public function getId () {
$ this-> id를 반환합니다.
}
/ ** 구성원의 이름을 가져옵니다.
* @return 문자열
* /
public function getFirstname () {
return $ this-> firstname;
}
/ ** 구성원의 이름을 설정합니다.
* @param 문자열 $ firstname
* /
공용 함수 setFirstname ($ firstname) {
$ this-> firstname = $ firstname;
}
// --- 더 복잡한 getter 및 setter 예제 --- //
/ ** 구성원의 그룹 배열을 가져옵니다.
* @return 그룹 []
* /
public function getGroups () {
$ this-> groups를 반환합니다.
}
/ ** 구성원에게 그룹 할당
* @param 그룹 $ group
* /
public function assignToGroup (Group $ group) {
$ this-> groups [] = $ group;
}
/ ** 그룹에서 구성원 제거
* @param 그룹 $ group
* /
public function removeFromGroups (Group $ group) {
$ this-> getGroups ()-> removeElement ($ group);
}
// ...
}
?>

그런 다음 머신 실행 프로세스는 SQL을 생성하여 데이터베이스를 생성 할 수 있습니다 (이는 MySQL, SQL Server 또는 PostgreSQL과 같은 다양한 SQL 구문 일 수 있음). SQL을 덤프하거나 데이터베이스에 연결하여 자체적으로 실행하여이를 수행 할 수 있습니다. 다 대다 링크 테이블 자체를 생성합니다.

교리 orm : schema-tool : create

또는

교리 orm : schema-tool : create --dump-sql

이제 PHP 개체와 테이블이 제자리에 있음을 알 수 있습니다. 이제 데이터베이스 관리 시스템에 연결하는 방법이나 관계형 테이블의 구조를 알 필요없이 개체를 처리 할 수 ​​있습니다.

$ group = new Group ();
// 그룹 세부 정보 설정, 지속 및 플러시 (아래 참조)
$ member = new Member ();
$ member-> setFirstname ( '');
$ member-> setSurname ( '');
$ 멤버-> setEmail ( '');
$ member-> assignToGroup ($ group);
$ entityManager-> persist ($ member);
$ entityManager-> flush ();
echo 'Created Member with ID'. $ member-> getId (). '엔';

물론 연결 세부 사항 및 부트 스트랩과 관련하여 위의 코드 예제보다 약간 더 많은 것이 있지만, 특히 ORM 및 Doctrine의 힘에 대해 설명해야한다고 생각했습니다. Doctrine 2와 다른 PHP ORM 라이브러리 몇 개를 추가하여 다양한 RDBMS를 지원하기 위해 PDO를 사용합니다.

포토샵에서 색상 교체하는 방법

유용하게도 교리 시스템은 필요할 때마다 광범위한 내장 지원을 포함합니다.

유용하게도 교리 시스템은 필요할 때마다 광범위한 내장 지원을 포함합니다.

12. 결론

저는 상용 프로젝트에서 PDO를 사용해 왔으며 제 경험으로 볼 때 객체 지향 덕분에 데이터베이스에 연결하고 나중에 데이터를 처리하는 것이 훨씬 쉬워졌습니다. 시스템 스위칭 기능에만 PDO를 사용할 필요가 없습니다. 기능은 사용자가 사용할 수 있고 효율성이 좋으며 현대적인 프로그래밍 디자인 패턴에 이상적입니다.

아직 절차 적 스타일의 시스템 특정 기능을 사용하는 많은 시스템이 있지만 저는 확실히 PDO로 초점이 이동하는 것을 보았습니다. Drupal, MediaWiki, WordPress 및 기타 많은 인기있는 오픈 소스 웹 애플리케이션이 이제 데이터베이스 연결을위한 PDO 시스템을 완전히 또는 부분적으로 지원하기 때문에 PDO가 실제로 작동하는 것을 볼 수 있습니다. 저는 데이터가 더 이상 데이터베이스와 밀접하게 연결되어 있지 않고 데이터베이스가 더 이상 코드와 밀접하게 연결되지 않는다는 비전을 가지고 있으며, 특정 응용 프로그램에 더 많은 범용 시스템이 구성되는 것을 볼 수 있습니다. ORM 시스템, NoSQL 및 연결된 데이터는 현재와 미래에주의해야 할 세 가지라고 생각합니다. 미래 웹 애플리케이션의 킬러 기능은 첫째로 데이터 연결의 토대가되고 둘째로 데이터 조작의 효율성에 의해 결정됩니다.

101 발견 CSS와 자바 스크립트 튜토리얼.

다니엘 루이스 웹 앱 개발자, 컨설턴트, 교사 및 연사입니다.