导航:首页 > 编程语言 > php模板语法

php模板语法

发布时间:2023-10-02 22:46:31

php语法错误

这个是模板文件编译后出现的语法错误,可以检查模板文件有没有写法问题。

可以按提示的

D:phpStudyWWWMyRuntimeCacheHome.phpLINE:513

这个文件和行,对应找出模板文件出问题的地方,再检查修复

❷ 一个完整的PHP类包含的七种语法说明

这篇文章主要介绍了一个完整的PHP类包含的七种语法说明,这些语法包括属性、静态属性、方法、静态方法、类常量、构造函数、析构函数,本文一一给代码示例和详细注解让你快速了解类的写法,需要的朋友可以参考下
类中的七种语法说明
-属性
-静态属性
-方法
-静态方法
-类常量
-构造函数
-析构函数
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
?php
class
Student
{
//
类里的属性、方法和函数的访问权限有
(函数和方法是同一个概念)
//
private
私有的
protected
受保护的
public
公有的
//
类常量
没有访问权限修饰符
const
STUDENT
=
'Tom';
//
属性
public
$stu_name;
//
静态属性
public
static
$stu_num
=
1;
//
方法
public
function
stuFunction()
{
echo
'non_static_function','br
/';
}
//
静态方法
public
static
function
static_stuFunction()
{
echo
'static_function','br
/';
}
//
构造函数
创建对象时自动调用
public
function
__construct($stu_name)
{
$this-stu_name
=
$stu_name;
echo
'__construct','br
/';
}
//
析构函数
销毁对象时自动调用
public
function
__destruct()
{
echo
'__destruct','br
/';
}
}
//
实例化类对象
$object
=
new
Student('Tom');
//
对象调用属性
echo
$object-stu_name,'br
/';
//
对象调用静态属性
echo
$object::$stu_num,'br
/';
//
类调用静态属性
echo
Student::$stu_num,'br
/';
//
使用对象分别调用方法和静态方法
$object-stuFunction();
$object-static_stuFunction();
$object::stuFunction();
$object::static_stuFunction();
//
使用类分别调用方法和静态方法
Student::stuFunction();
Student::static_stuFunction();
//
类调用类常量
echo
Student::STUDENT,'br
/';
总结:
对象可以调用方法和静态方法,类可以调用方法和静态方法。

❸ php 的框架与模板

楼主的认知不对哦,以下为楼主解惑:

框架:在php源码的基础上,开发者将常用的功能进行二次封装形成的代码集合,其本身往往不具备任何可用的功能,其目的仅仅是使开发人员可以基于框架更快的开发出符合要求的应用。例如,不使用框架开发一个用户管理功能可能需要5天,使用框架可以将这个时间缩短到2天。实际上,对于任何一个项目,访问控制、数据库访问、文件处理等功能都是必备的,框架就是将这些常用功能进行了更易用的封装,避免开发人员在通用组件上重复开发,浪费时间。

模板:为了将PHP内容和html内容更好的分离为目的产生的一种应用,其主要目的是为了网页制作人员可以不去学习PHP就能修改页面的内容(可惜不学PHP还要学smarty,因此我个人并不觉得模板真的能带来什么实际的好处)

另外,如dede,DZ,PHPCMS等是基于PHP的产品,本身已经具备了大量的功能,安装之后就能使用,当然,因为需求的不同可能需要在该产品的基础上进行二次开发。

综述,模板没有太大的价值,完全可以在非用不可的时候再去学习,对于PHP开发人员来说,smarty可以立刻上手。它可以(也只能)被框架或PHP产品使用。框架是必须掌握的,定制性很强的项目必然都是基于框架开发的。PHP产品,如果你要开发的项目和某个PHP产品的功能达到80%以上的契合,那么应该考虑基于该产品进行开发。

一些网站提供简单的博客,留言板等的源码,不基于框架的小项目实际上只能称为练习,只有参考价值。

注:不是说不使用框架的项目就不算项目,事实上如果一个项目如果没有使用某某框架,其项目的一部分代码也必然的会具有框架的特征,即自定义框架也是框架。

❹ 您好,我想问一下js文件里可以直接接收使用php的assign方法传过来的值吗看到您回答过类似问题,谢谢

首先确认下。php的assign应当是一种模板语法。

$this->assign('param',$param);

上述php一般和以下html模板成对出现

<p><{$param}></p>

那么如果要在js中直接取值,只需在模板文件中如下编写

<script>
varparam={$param}
</script>

注意:如果$param是字符串,则需要加引号。json和int都可不加

❺ 使用PHP程序检查PHP文件是否有语法错误

在网上找了一下。刚开始以为 token_get_all()函数能处理语法错误的问题,结果发现,它只是做简单的词法分析。没有办法。后来到论坛上去问了一下
之前在当当的时候的一个项目中用到了一个简单的模板引擎,其实也是借鉴discuz来做的模板引擎,很简单,它所作的事情就是把一些自定义的标签编译成php代码。已经说了很简单了,所以编译的时候也名优进行模板语法的检查,那么在开发过程中就会出现编译出来的php文件有语法问题,有语法问题没有关系,我修改重新编译一下就好了。首先不能在每次请求的时候都把php模板重新编译一下,会严重影响性能,折中的处理时在每个编译好的php文件末尾检查一下该模板文件是否已经修改过,根据设定的更新频率,如果又需要则重新编译模板文件,现在的问题是编译出来的php文件自己有语法错误,根本执行不到模板检查那一步,所以即使修改了模板文件中的问题也不会重新编译。 所以我想寻找一种简单的方法来检查生成的php文件是否合法。不合法就重新编译,这样开发过程中就不用出现错误就得手动删除缓存文件了。
在网上找了一下。刚开始以为 token_get_all()函数能处理语法错误的问题,结果发现,它只是做简单的词法分析。没有办法。后来到论坛上去问了一下
有人告诉我有这样一个函数 php_check_syntax() 我想问题就这么坚决了。。我真应该rtf(read the fuck mannual). 仔细一看。这个函数已近被弃用了:
note: for technical reasons, this function is deprecated and removed from php. instead, use php -l somefile.php from the commandline.
这个technical reason 到底是什么呢? 先不管了,以后再慢慢研究,反正不能使用这个方法就对了。
他们的建议是使用命令行$php -l filename.php 来检查语法。
gary every给了我一个代码片段参考:
在命令行下检查问题也不大。如果我要放在在线应用呢? 这就涉及到可移植性的问题了。首先是操作系统,然后就是环境变量。这样的话就会依赖于服务器端的配置。在http://www.php.net/manual/en/function.php-check-syntax.php 上有人贴出了自己的php_check_syntax()函数实现。
有的采用的就是上面的命令行的方法。
后面有提到使用eval的方法来验证。eval方法会执行传入的代码, 如果代码有语法错误则会抛出parser error, 可以使用'@'错误抑制符去掉错误信息,eval和echo一样并不是函数,不能使用变量函数的方法调用比如:
$func = ‘eval'
$func()这样的调用就是无效的。它会提示没有eval函数,如果你自己定义这么一个函数也是有问题的。因为eval是一个关键字。
eval调用和include差不多,如果被包含文件中没有明确return就返回null。如果直接eval我们需要检查的文件会造成被检查的文件内代码被执行,这可不是我们想要的,我们只需要检查一下这个文件的语法是否正确。 我们可以在要检查的文件之前添加return 语句,让代码提前跳出,那么后面的代码就不会执行了。好的,就这么干。
checker.php
if(!function_exists('php_check_syntax')) {
function php_check_syntax($file_name, &$error_message = null) {
$file_content = file_get_contents($file_name);
$check_code = "return true; ?>";
$file_content = $check_code . $file_content . "<?php ";
if(!@eval($file_content)) {
$error_message = "file: " . realpath($file_name) . " have syntax error";
return false;
}
return true;
}
}
if(!php_check_syntax("file.php", $msg)) {
echo $msg;
}
else {
echo "woohoo, ok!";
}
file.php
<?php
foreach:: a => b
?>
因为parse error 是没法被 set_error_handler处理函数处理的。这个异常没办法catch到。所以才使用了@来抑制错误。这带来的问题就是我们无法得到详细的错误信息。 不过目前我需要的功能也只是检查语法是否正确。不正确的话重新编译模板文件,就这么简单,至于语法错误,在显示网页的时候自然会看得到。

❻ smarty模板中include和include_php的用法

我们可以在模板内载入PHP程序或者另一个子模板.分别可以使用include_php及include这两个Smarty模板语法.俺习惯用include 啦.
在使用include 时,我们可以预先载入子模板,或者动态载入子模板.预先载入通常使用在有共同的文件标头或者版权什么的.而动态载入则可以用在同一的框架页,这样就可以换皮肤一样换界面啦.两者也可以同时混用.是情况八.
test.php---------
<?php
require "main.php";
$tpl->assign("title", "Include Test");
$tpl->assign("content", "这是模板1.htm的参数");
$tpl->assign("dyn_page", "3.htm");
$tpl->display('test.htm');
?>
模板templates下面
test.htm----------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<title><{$title}></title>
</head>
<body>
<{include file="1.htm"}><br />
<{include file=$dyn_page}>
<{include file="2.htm" custom_var="自己定义变量的内容"}>
</body>
</html>

1.htm----
<{$content}>
2.htm----
<{$custom_var}>

吃饭后继续

OK,下面我将尽力解释下include_php
include_php这个标签通常用来在你的模板文件中include一个php文件.这个php文件一般在这个本地路径的文件夹下面.include_php这个标签必须有file这个属性.用来包含应用php文件的路径的人.可以是相对路径,也可以是绝对路径.{include_php file="/path/to/load.php"}

include_php是一种非常好的模板组建句柄.使php代码和模板文件分离开来.举例来说吧.比较直观点.比如你有个模板是用来显示你的网站导航的.当然导航的内容是动态的从数据库中获取.这时你可以将php联接数据库的获取内容放在一个php文件中,然后在模板文件中include_php file=xxxxx.php这样,你可以在任何地方应用这个导航模板.而不需要再次做联结导航内容的工作啦.
通常,php文件默认只能包含一次.如果你一定要多次引用,那么可以增加once属性设置为false就可以拉.

给出实际例子啦(来自手册)
function include_php

load_nav.php
-------------

<?php

// load in variables from a mysql db and assign them to the template
require_once("MySQL.class.php");
$sql = new MySQL;
$sql->query("select * from site_nav_sections order by name",SQL_ALL);
$this->assign('sections',$sql->record);

?>

index.tpl
---------

{* absolute path, or relative to $trusted_dir *}
{include_php file="/path/to/load_nav.php"}

{foreach item="curr_section" from=$sections}
<a href="{$curr_section.url}">{$curr_section.name}</a><br>
{/foreach}
---------
回答完毕,谢谢大家得掌声.哇哈哈

❼ 急急急。PHP问题,提示 Smarty的模板语法编译错误,怎么解决

根据你贴出的报错信息,可以判断出你模版里面用的分隔符(delimiter)不对,你看看你初始化smarty的时候left_delimiter 和right_delimiter 写的什么,比如我的配置如下:

	'left_delimiter'=>'{%',
'right_delimiter'=>'%}',

那么在模版里就写:{%if $regularlist['total'] > 0%} aaa{%/if%}

❽ php类的语法说明

类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:
<?php
class Cart { var $items; // 购物车中的物品
// 将 $num 个 $artnr 物品加入购物车
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
} // 将 $num 个 $artnr 物品从购物车中取出
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num; return true;
} elseif
($this->items[$artnr] == $num) {
unset($this->items[$artnr]); return true;
} else {
return false; }
}
} ?>
上面的例子定义了一个 Cart 类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。
<?php
class test {
?>
<?php
function test() {
print 'OK'; }
}?>
但是以下用法是可以的:
<?phpclass test { function test() { ?> <?php print 'OK'; }}?>
在 php 4 中,var 变量的值只能初始化为常量。用非常量值初始化变量,需要一个初始化函数,该函数在对象被创建时自动被调用。这样一个函数被称之为构造函数(见下面)。
<?php/* php 4 中不能这样用 */class Cart { var $todays_date = date(Y-m-d); var $name = $firstname; var $owner = 'Fred ' . 'Jones'; /* 不过包含有常量的数组可以 */ var $items = array(VCR, TV);}/* 应该这样进行 */class Cart { var $todays_date; var $name; var $owner; var $items = array(VCR, TV); function Cart() { $this->todays_date = date(Y-m-d); $this->name = $GLOBALS['firstname']; /* etc. . . */ }}?>
类也是一种类型,就是说,它们是实际变量的蓝图。必须用 new 运算符来创建相应类型的变量。
<?php$cart = new Cart;$cart->add_item(10, 1);$another_cart = new Cart;$another_cart->add_item(0815, 3);?>
上述代码创建了两个 Cart 类的对象 $cart 和 $another_cart,对象 $cart 的方法 add_item() 被调用时,添加了 1 件 10 号商品。对于对象 $another_cart,3 件 0815 号商品被添加到购物车中。
$cart 和 $another_cart 都有方法 add_item(),remove_item() 和一个 items 变量。它们都是明显的函数和变量。可以把它们当作文件系统中的某些类似目录的东西来考虑。在文件系统中,可以拥有两个不同的 README.TXT 文件,只要不在相同的目录中。正如从为了根目录访问每个文件需要输入该文件的完整的路径名一样,必须指定需要调用的函数的完整名称:在 php 术语中,根目录将是全局名字空间,路径名符号将是 ->。因而,名称 $cart->items 和 $another_cart->items 命名了两个不同的变量。注意变量名为 $cart->items,不是 $cart->$items,那是因为在 php 中一个变量名只有一个单独的美元符号。
<?php// 正确,只有一个 $$cart->items = array(10 => 1);// 不正确,因为 $cart->$items 变成了 $cart->$cart->$items = array(10 => 1);// 正确,但可能不是想要的结果:// $cart->$myvar 变成了 $cart->items$myvar = 'items';$cart->$myvar = array(10 => 1);?>
在定义类的时候,无法得知将使什么名字的对象来访问:在编写 Cart 类时,并不知道之后对象的名称将会命名为 $cart 或者 $another_cart。因而你不能在类中使用 $cart->items。然而为了类定义的内部访问自身的函数和变量,可以使用伪变量 $this 来达到这个目的。$this 变量可以理解为“我自己的”或者“当前对象”。因而 '$this->items[$artnr] += $num' 可以理解为“我自己的物品数组的 $artnr 计数器加 $num”或者“在当前对象的物品数组的 $artnr 计数器加 $num”。

阅读全文

与php模板语法相关的资料

热点内容
解压车贷后gps怎么找 浏览:350
源码数据库怎么配备 浏览:136
知乎程序员小灰 浏览:574
新概念英语第一册书pdf 浏览:5
安卓ans文件怎么打开 浏览:893
选择题改进分治算法的方法有 浏览:108
下载云服务器有什么好处 浏览:23
江苏机架式服务器云主机 浏览:411
linux补全命令 浏览:514
我要打命令 浏览:970
御人pdf 浏览:390
小米手机怎么发送文件夹用qq 浏览:917
找人一起玩用什么app好 浏览:398
程序员最烦的4件事 浏览:485
怎么查ice服务器 浏览:760
excel加密不可以复制 浏览:308
py编译器的键盘输入在哪 浏览:226
云服务器和深度学习 浏览:102
交叉编译标准输出 浏览:24
如何启用DNS服务器 浏览:736