forked from smarty-php/smarty
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PHP8.2 compatibility (smarty-php#775)
* PHP8.2 compatibility * PHP8.2 compatibility : Fixed unit tests * PHP8.2 compatibility : Replace ENT_COMPAT by ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 * PHP8.2 compatibility : Remove deprecated utf8_decode * PHP8.2 compatibility : Remove HTML-ENTITIES parameter * Removed some unused code for clarity, updated the changelog. * More concise escape implementation and unit test to cover both modifierplugin and modifiercompiler. * Fix htmlall unescape of quotes without mbstring too Co-authored-by: Simon Wisselink <s.wisselink@iwink.nl>
- Loading branch information
1 parent
2fc4438
commit 823431d
Showing
22 changed files
with
298 additions
and
137 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
What is Smarty? | ||
============== | ||
|
||
## Requirements | ||
Smarty can be run with PHP 7.1 to PHP 8.2. | ||
|
||
## Installation | ||
Smarty versions 3.1.11 or later can be installed with [Composer](https://getcomposer.org/). | ||
|
||
To get the latest stable version of Smarty use: | ||
```bash | ||
composer require smarty/smarty | ||
```` | ||
|
||
To get the latest, unreleased version, use: | ||
```bash | ||
composer require smarty/smarty:dev-master | ||
```` | ||
To get the previous stable version of Smarty, Smarty 3, use: | ||
```bash | ||
composer require smarty/smarty:^3 | ||
```` | ||
|
||
Here's how you create an instance of Smarty in your PHP scripts: | ||
```php | ||
<?php | ||
require 'vendor/autoload.php'; | ||
$smarty = new Smarty(); | ||
``` | ||
Now that the library files are in place, it's time to setup the Smarty | ||
directories for your application. | ||
|
||
Smarty requires four directories which are by default named | ||
[`templates`](./programmers/api-variables/variable-template-dir.md), | ||
[`configs`](./programmers/api-variables/variable-config-dir.md), | ||
[`templates_c`](./programmers/api-variables/variable-compile-dir.md) | ||
and | ||
[`cache`](./programmers/api-variables/variable-cache-dir.md) | ||
relative to the current working directory. | ||
|
||
The defaults can be changed as follows: | ||
```php | ||
$smarty = new Smarty(); | ||
$smarty->setTemplateDir('/some/template/dir'); | ||
$smarty->setConfigDir('/some/config/dir'); | ||
$smarty->setCompileDir('/some/compile/dir'); | ||
$smarty->setCacheDir('/some/cache/dir'); | ||
``` | ||
|
||
The compile dir and cache dir need to be writable for the user running the PHP script. | ||
|
||
> **Note** | ||
> | ||
> This is usually user "nobody" and group "nobody". For OS X users, the | ||
> default is user "www" and group "www". If you are using Apache, you | ||
> can look in your `httpd.conf` file to see what user and group are | ||
> being used. | ||
|
||
```bash | ||
chown nobody:nobody /web/www.example.com/guestbook/templates_c/ | ||
chmod 770 /web/www.example.com/guestbook/templates_c/ | ||
chown nobody:nobody /web/www.example.com/guestbook/cache/ | ||
chmod 770 /web/www.example.com/guestbook/cache/ | ||
``` | ||
|
||
You can verify if your system has the correct access rights for | ||
these directories with [`testInstall()`](./programmers/api-functions/api-test-install.md): | ||
|
||
```php | ||
$smarty = new Smarty(); | ||
$smarty->setTemplateDir('/some/template/dir'); | ||
$smarty->setConfigDir('/some/config/dir'); | ||
$smarty->setCompileDir('/some/compile/dir'); | ||
$smarty->setCacheDir('/some/cache/dir'); | ||
$smarty->testInstall(); | ||
``` | ||
|
||
Now, let's create the `index.tpl` file that Smarty will display. This | ||
needs to be located in the [`$template_dir`](./programmers/api-variables/variable-template-dir.md). | ||
```html | ||
{* Smarty *} | ||
Hello {$name}, welcome to Smarty! | ||
``` | ||
> **Note** | ||
> | ||
> `{* Smarty *}` is a template [comment](./designers/language-basic-syntax/language-syntax-comments.md). It | ||
> is not required, but it is good practice to start all your template | ||
> files with this comment. It makes the file easy to recognize | ||
> regardless of the file extension. For example, text editors could | ||
> recognize the file and turn on special syntax highlighting. | ||
Now lets edit our php file. We'll create an instance of Smarty, | ||
[`assign()`](./programmers/api-functions/api-assign.md) a template variable and | ||
[`display()`](./programmers/api-functions/api-display.md) the `index.tpl` file. | ||
|
||
```php | ||
<?php | ||
require 'vendor/autoload.php'; | ||
$smarty = new Smarty(); | ||
$smarty->setTemplateDir('/web/www.example.com/guestbook/templates/'); | ||
$smarty->setCompileDir('/web/www.example.com/guestbook/templates_c/'); | ||
$smarty->setConfigDir('/web/www.example.com/guestbook/configs/'); | ||
$smarty->setCacheDir('/web/www.example.com/guestbook/cache/'); | ||
$smarty->assign('name', 'Ned'); | ||
$smarty->display('index.tpl'); | ||
``` | ||
|
||
> **Note** | ||
> | ||
> In our example, we are setting absolute paths to all of the Smarty | ||
> directories. If `/web/www.example.com/guestbook/` is within your PHP | ||
> include\_path, then these settings are not necessary. However, it is | ||
> more efficient and (from experience) less error-prone to set them to | ||
> absolute paths. This ensures that Smarty is getting files from the | ||
> directories you intended. | ||
|
||
Now, run your PHP file. You should see *\"Hello Ned, welcome to Smarty!\"* | ||
|
||
You have completed the basic setup for Smarty! | ||
|
||
## Extended Setup {#installing.smarty.extended} | ||
============== | ||
|
||
This is a continuation of the [basic | ||
installation](#installing.smarty.basic), please read that first! | ||
|
||
A slightly more flexible way to setup Smarty is to extend the Smarty | ||
class and initialize your Smarty | ||
environment. So instead of repeatedly setting directory paths, assigning | ||
the same vars, etc., we can do that in one place. | ||
|
||
```php | ||
<?php | ||
class Smarty_GuestBook extends Smarty { | ||
public function __construct() | ||
{ | ||
parent::__construct(); | ||
$this->setTemplateDir('/web/www.example.com/guestbook/templates/'); | ||
$this->setCompileDir('/web/www.example.com/guestbook/templates_c/'); | ||
$this->setConfigDir('/web/www.example.com/guestbook/configs/'); | ||
$this->setCacheDir('/web/www.example.com/guestbook/cache/'); | ||
$this->caching = Smarty::CACHING_LIFETIME_CURRENT; | ||
$this->assign('app_name', 'Guest Book'); | ||
} | ||
} | ||
``` | ||
|
||
Now, we can use `Smarty_GuestBook` instead of `Smarty` in our scripts: | ||
```php | ||
$smarty = new Smarty_GuestBook(); | ||
$smarty->assign('name','Ned'); | ||
$smarty->display('index.tpl'); | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.