PHP经典面试题之设计模式(经常遇到),php设计模式
PHP经典面试题之设计模式(经常遇到),php设计模式
设计模式在面试过程中经常会提到,有时候还会让我们举例说明各种设计模式的应用场景。
使用设计模式可以减轻我们的工作量,优化我们的代码。
设计模式非常的多,这里介绍单例模式,工厂模式,组合模式,策略模式4种模式
如果有代码有什么问题或者有更好的方式请告知,谢谢!!!!!
/** * 单例模式 * @author YangYang <1812271619@qq.com> * 可以想成在一次http请求中只产生该类的一个对象(即只new classname一次) * 经典的例子是数据库连接(redis,mongodb,memcache等) * 在一次http请求中我们可能需要对数据库做增删改查多条sql操作 * 但是如果一次http请求中每执行一条sql我们就mysql_connect(),很明显会导致服务器资源的浪费 * 为了节约资源,就可以通过单例模式来实现一次http请求只做一次mysql_connect() * 即将mysql_connect()放在类方法的__construct中,并将__construct方法做成私有, * 这样只能通过getInstance()方法来获得mysql_connect()的资源连接符 * getInstance()方法中判断是否已经存在myql连接符,如果存在就直接返回该连接符 * 否则new classname()即调用了__construct方法执行了mysql_connect()得到了资源连接符,并返回连接符 * 因为现在PHP已不再建议直接使用mysql函数进行数据库操作,而是建议通过PDO进行数据库操作,所以这里写一个简易PDO连接的单例模式 * 这里只是讲解单例原理,数据库的防sql注入等问题不做考虑 * 准备工作 数据库:test 数据表:user 字段:id name 记录:1 CodeAnti * 最终运行结果: 数据表user中id=1这条记录被删除 */ class SinglePDO { private static $_instance = null; private $_pdo; //私有,防止外部直接实例化new SinglePDO(...) private function __construct($dsn,$dbUser,$dbPassword) { try{ $this->_pdo = new PDO($dsn,$dbUser,$dbPassword); $this->_pdo->exec('set names utf8'); }catch(PDOException $e){ die("Error:{$e->getMessage()}"); } } //私有,防止克隆 private function __clone(){} //获取连接实例 public static function getInstance($dsn,$dbUser,$dbPassword) { if(self::$_instance === null) self::$_instance = new self($dsn,$dbUser,$dbPassword); return self::$_instance; } //执行sql public function execSql($sql) { $result = $this->_pdo->exec($sql); return $result; } } $dsn = "mysql:host=localhost;dbname=test"; $dbUser = "root"; $dbPassword = ""; $sql = "delete from user where id = 1"; $pdo = SinglePDO::getInstance($dsn,$dbUser,$dbPassword); $result = $pdo->execSql($sql); //$pdo->execSql($sql)多次调用,但仍然是同一个pdo对象 print_r($result);

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.
