백엔드 개발 PHP 튜토리얼 ThinkPHP的PHP变量传送到模板原理浅析

ThinkPHP的PHP变量传送到模板原理浅析

Jun 13, 2016 pm 12:53 PM
display list this

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();
로그인 후 복사


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

유출된 셀카 디스플레이가 이전에 저렴했던 카메라 라인에 복잡성을 추가함에 따라 Fujifilm X-M5 가격 기대치가 높아졌습니다. 유출된 셀카 디스플레이가 이전에 저렴했던 카메라 라인에 복잡성을 추가함에 따라 Fujifilm X-M5 가격 기대치가 높아졌습니다. Sep 07, 2024 am 09:34 AM

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

삼성: E Ink 기술을 기반으로 한 새로운 대형 디스플레이는 색상을 표시하고 무선으로 통신합니다. 삼성: E Ink 기술을 기반으로 한 새로운 대형 디스플레이는 색상을 표시하고 무선으로 통신합니다. Jun 19, 2024 pm 03:37 PM

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

참고:Apple Studio Display와 Samsung Smart Monitor M8 비교 참고:Apple Studio Display와 Samsung Smart Monitor M8 비교 May 11, 2023 pm 10:46 PM

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

Apple Studio Display의 전원 코드는 분리 가능하지만 특별한 도구가 필요합니다 Apple Studio Display의 전원 코드는 분리 가능하지만 특별한 도구가 필요합니다 May 17, 2023 pm 03:05 PM

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

PHP에서 Redis 목록 작업을 구현하는 방법 PHP에서 Redis 목록 작업을 구현하는 방법 May 26, 2023 am 11:51 AM

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

표시해 그게 무슨 뜻이야 표시해 그게 무슨 뜻이야 Oct 26, 2023 am 11:50 AM

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

Apple Studio Display를 지원하도록 Boot Camp가 업데이트되었습니다. Apple Studio Display를 지원하도록 Boot Camp가 업데이트되었습니다. May 20, 2023 pm 11:34 PM

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

디스플레이에는 어떤 가치가 있습니까? 디스플레이에는 어떤 가치가 있습니까? Nov 20, 2023 pm 05:28 PM

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

See all articles