ThinkPHP的PHP变量传送到模板原理浅析
ThinkPHP的PHP变量传递到模板原理浅析
程序员就应该是站在前人的肩膀上前进,所以,分析优秀的开源产品以及框架我觉得是程序员必做事情。
最近在尝试自己独立编写一个程序,在后台用到了php模板,简单来说,就是模板中用原生态的PHP代码做循环、显示内容。
$this->display();
这个对于使用thinkphp的朋友应该是很熟悉了,就是一个引用模板的代码,我也是这么做的。开始的时候,我是这么写的
$list = $this->query('select * from %pre%yiciconf where left(`key`,4)=\'sys_\''); $setting = array(); if (!empty($list)) { foreach ($list as $value){ $setting[$value['key']] = $value['value']; } } $this->display();
模板中居然报错,说找不到setting,悲剧啊,因为模板的引用在display中,所以这里声明的变量根本没法进去,都是类方法,这是闹哪样,蛋碎。
开始也想过global来进行超全局传递,但是想想,貌似效率不高,而且每个引用的都这么写,想想越写越多,都是难以维护以及阅读的事情。必须让自己以及阅读者知道这个变量引用到模板中了,于是我眼睛紧盯
$this->assign()
总体来说,大致流程如下:
1、声明一个初始值为array()的类变量
protected $_var = array();
2、使用方法assign将局部变量传递到类变量中
$this->_var[$name] = $value;
3、在方法display中,使用extract函数将$this->_var分解成当前方法的局部变量,然后在display中应用模板
include $tplfile;
最后:
$list = $this->query('select * from %pre%yiciconf where left(`key`,4)=\'sys_\''); $setting = array(); if (!empty($list)) { foreach ($list as $value){ $setting[$value['key']] = $value['value']; } } $this->assign('setting', $setting); $this->display();

핫 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)

뜨거운 주제











Fujifilm 팬들은 최근 X-T50의 전망에 매우 흥분했습니다. X-T50은 1,000달러 미만 APS-C 카테고리에서 꽤 인기를 끌었던 예산 중심의 Fujifilm X-T30 II의 재출시를 선보였기 때문입니다. 안타깝게도 후지필름 X-T50이 출시되면서

우리는 e-리더와 같은 전자 잉크를 사용하는 디스플레이 기반 장치에 대해 자주 보고합니다. 이 기술은 여러 가지 장점을 제공합니다. 백라이트 없이 밝은 환경에서 읽을 수 있으며 조명 없이 전환할 때만 전원이 필요합니다.

삼성 스마트 디스플레이 M8 vs. 애플 스튜디오 디스플레이: 디자인과 크기 애플 스튜디오 디스플레이는 출시 이후 비교적 단순한 L자형 스탠드에 비교적 얇은 패널로 구성된 아이맥과 비교돼 왔다. 이는 잘 알려져 있고 많은 사랑을 받는 미학인데, 삼성은 이를 프레젠테이션에 차용한 것 같습니다. Samsung SmartMonitor M8은 매우 유사해 보이는 스탠드에 얇은 화면을 적용한다는 동일한 아이디어를 사용합니다. 왼쪽 하단 모서리의 작은 부분이 조금 튀어나온 점, 삼성의 턱 부분이 매우 얇은 등 일부 자잘한 요소는 다르지만 기본적인 디자인 면에서는 거의 비슷한 것 같습니다. 삼성은 24인치 아이맥에서 많은 영감을 얻은 것 같습니다. 애플의 디스플레이는 삼성보다 작다.

Apple Studio Display는 이제 공식적으로 매장에서 판매되고 있으며 전 세계의 많은 고객이 제품을 구입했습니다. ProDisplayXDR과 달리 StudioDisplay에는 제거할 수 없는 것처럼 보이는 고유한 전원 커넥터가 있습니다. 케이블은 제거가 가능한 것으로 밝혀졌지만 케이블을 제거하려면 특별한 도구가 필요합니다. Apple은 자사 웹사이트에서 Studio Display의 전원 코드는 분리할 수 없다고 밝혔으며 많은 사용자가 그렇게 생각합니다. 손으로 케이블을 빼는 것은 불가능해 보이지만 다행히 케이블은 모니터에서 분리될 수 있기 때문이다. , Apple에는 새로운 StudioDispl에서 정보를 추출하기 위한 특수 도구가 있습니다.

목록 작업 //목록의 선두에서 값을 삽입합니다. $ret=$redis->lPush('city','guangzhou');//목록 끝에 값을 삽입합니다. $ret=$redis->rPush('city','guangzhou');//목록의 지정된 범위에 있는 요소를 가져옵니다. 0은 목록의 첫 번째 요소를 나타내고, -1은 마지막 요소를 나타내고, -2는 끝에서 두 번째 요소를 나타냅니다. $ret=$redis->l

디스플레이란 일반적으로 데이터, 정보 또는 결과를 어떤 방식으로든 사용자에게 표시하거나 이를 화면이나 기타 장치에 출력하는 작업 또는 기능을 말합니다. 구체적인 의미: 1. 명령줄 인터페이스(CLI)에서 디스플레이는 사용자가 보거나 분석할 수 있도록 텍스트, 표 또는 기타 형식의 데이터를 터미널 창에 출력하는 것을 의미할 수 있습니다. 2. 그래픽 사용자 인터페이스(GUI)에서 디스플레이를 의미합니다. 사용자 상호 작용이나 탐색 등을 위해 애플리케이션 창이나 인터페이스에 이미지, 텍스트, 차트 및 기타 콘텐츠를 표시하는 것을 의미할 수 있습니다.

Mac에서 Windows를 실행하는 IntelMac 사용자는 이제 BootCamp에서 드라이버를 업데이트하여 Apple의 StudioDisplay를 지원할 수 있습니다. Apple은 정기적으로 BootCamp를 업데이트하여 새로운 하드웨어에 대한 지원은 물론 일반적인 호환성 및 성능 개선을 도입합니다. 3월 소프트웨어 업데이트에서 Apple은 BootCamp가 새로운 StudioDisplay와 작동하도록 활성화했습니다. BootCamp를 버전 6.1.17로 가져오는 업데이트에는 두 가지 주요 지원 요소가 도입되었습니다. 첫째, StudioDisplay와의 호환성을 추가하여

표시 값에는 block, inline, none, inline-block, flex, Grid, table, inline-table 및 list-item이 포함됩니다. 자세한 소개: 1. 요소를 블록 수준 요소로 렌더링하는 블록 블록 수준 요소는 페이지에서 블록을 형성하고 한 줄만 차지합니다. 2. 요소를 인라인 요소로 렌더링하는 인라인. 인라인 요소는 그 자체로 한 줄을 차지하지 않으며 다른 요소와 나란히 있을 수 있습니다. 3. 없음, 이 값은 요소가 페이지에 표시되지 않음을 지정합니다.
