Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

View php type

PHP Data Types

PHP Data Types

Variables can store data of different types, and different data types can do different things.

PHP supports the following data types:

  • String
  • Integer
  • Float (floating point numbers — also called double)
  • Boolean
  • Array
  • Object
  • NULL
  • Resource

PHP String

A string is a sequence of characters, like «Hello world!».

A string can be any text inside quotes. You can use single or double quotes:

Example

PHP Integer

An integer data type is a non-decimal number between -2,147,483,648 and 2,147,483,647.

Rules for integers:

  • An integer must have at least one digit
  • An integer must not have a decimal point
  • An integer can be either positive or negative
  • Integers can be specified in: decimal (base 10), hexadecimal (base 16), octal (base 8), or binary (base 2) notation

In the following example $x is an integer. The PHP var_dump() function returns the data type and value:

Example

PHP Float

A float (floating point number) is a number with a decimal point or a number in exponential form.

In the following example $x is a float. The PHP var_dump() function returns the data type and value:

Example

PHP Boolean

A Boolean represents two possible states: TRUE or FALSE.

Booleans are often used in conditional testing. You will learn more about conditional testing in a later chapter of this tutorial.

PHP Array

An array stores multiple values in one single variable.

In the following example $cars is an array. The PHP var_dump() function returns the data type and value:

Example

You will learn a lot more about arrays in later chapters of this tutorial.

PHP Object

An object is a data type which stores data and information on how to process that data.

In PHP, an object must be explicitly declared.

First we must declare a class of object. For this, we use the class keyword. A class is a structure that can contain properties and methods:

Example

// create an object
$herbie = new Car();

// show object properties
echo $herbie->model;
?>

PHP NULL Value

Null is a special data type which can have only one value: NULL.

A variable of data type NULL is a variable that has no value assigned to it.

Tip: If a variable is created without a value, it is automatically assigned a value of NULL.

Variables can also be emptied by setting the value to NULL:

Example

PHP Resource

The special resource type is not an actual data type. It is the storing of a reference to functions and resources external to PHP.

A common example of using the resource data type is a database call.

We will not talk about the resource type here, since it is an advanced topic.

Создание собственного шаблонизатора

Дата публикации: 2014-08-18

От автора: Разрабатывая веб-приложения, очень хорошей практикой является отделение логики скрипта от его дизайна. В таком случае очень удобно выполнять всевозможные правки по дизайну, не затрагивая логики. И наоборот, изменяя логическую часть приложения – внешний вид остается нетронутым. Но при создании приложений по такой структуре возникает вопрос, как передать переменные в дизайнерскую часть? Поэтому в данном уроке мы с Вами научимся создавать собственный несложный шаблонизатор, при помощи которого можно передавать переменные из логической части скрипта в дизайнерскую.

Введение

Первым делом определимся с понятием шаблона. Шаблоны — это отдельные файлы которые занимаются выводом данных скрипта на экран. То есть они занимаются только выводом информации, при этом шаблон только получает данные для вывода и ни как их не формирует. Из этого следует, что шаблоны содержат практически чистый HTML с минимальными вставками PHP кода, который используется для отображения данных переменных, формирования условий (if — else) и описания циклов (foreach) для обхода по массивам. Шаблоны бывают самых различных видов, а вместе с тем и шаблонизаторы. Но различают два основных вида шаблонов по способу передачи данных. Первый предусматривает передачу значений обычных переменных, которые в последствии, будут выведены на экран обычным образом, к примеру, используя функцию echo:

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Второй вид предусматривает вставку в шаблон специальных меток, которые будут заменены шаблонизаором на соответствующие значения. Вот пример такой метки:

В данном уроке мы будем рассматривать первый тип шаблонов. Так как этот тип наиболее удачен и функционален. Смотрите, язык PHP по своей структуре уже является очень хорошим шаблонизатором, так как очень легко встраивается в разметку HTML. Если же мы используем в шаблонах специальные метки (<$var>) , то для вывода данных, нам потребуется писать специальную функцию, которая отыщет все метки и заменит их, на соответствующие данные. Но что получается, PHP и так очень хорошо встраивается в PHP, а мы пишем дополнительные функции для вывода переменных на экран. Хотя можем ограничиться обычной функцией echo:

Создание шаблонов

Для сегодняшнего урока мы будем использовать следующий сайт:

Вот код файла index.php который, выводит главную страницу на экран:

» , $row [ ‘title’ ] , $row [ ‘id’ ] , $row [ ‘title’ ] , $row [ ‘date’ ] , $row [ ‘title’ ] , $row [ ‘img_src’ ] , $row [ ‘discription’ ] , $row [ ‘view’ ] ) ; > ?>

Читать еще:  Проверить пунктуацию онлайн и исправление ошибок

Как Вы видите в этом файле логика скрипта тесно связана с его дизайном. Поэтому давайте это исправим и создадим шаблон для главной страницы тестового сайта. Вот код шаблона:

Как Вы видите в данный файл я вынес только дизайн главной страницы сайта. Для вывода данных сайта используются обычные переменные PHP. Цикл foreach описан при помощи альтернативного синтаксиса. Обратите внимание, что код данного файла достаточно прост и состоит практически из разметки HTML, что упрощает редактирование дизайна. Данный файл я сохраняю в папку templates под именем index.tpl.php.

В свою очередь файл index.php, файл который выводит главную страницу на экран, теперь содержит только логическую часть:

Теперь, когда у нас есть шаблон, необходимо передать ему данные и вывести на экран.

Создание шаблонизатора

В качестве шаблонизатора в нашем случае будет выступать функция:

Данная функция, принимает два параметра: $tmp – имя шаблона (только имя – без расширения и строки tpl), $vars = array() – необязательный параметр – массив переменных которые необходимо передать в шаблон.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

В данной функции проверяем, существует ли в папке templates нужный шаблон. И если он существует — то первым делом включаем буферизированный вывод, используя функцию ob_start(). При этом весь вывод на экран будет попадать в буфер обмена. Далее нужно создать переменные, которые будут переданы в шаблон. Эти переменные мы передаем в виде массива $vars. Это обычный ассоциативный массив, ключи которого содержат имена переменных, а значения, соответственно – значения этих переменных. Используя функцию extract($vars), мы создаем в памяти переменные из массива $vars. Имена которых, соответствуют ключам данного массива.

После этого необходимо только лишь подключить нужный файл шаблона, что мы собственно и делаем. При этом на экран ничего выведено не будет, так как включен буферизированный вывод. Значит необходимо очистить буфер обмена. Для этого используем функцию ob_get_clean(), она очищает буфер обмена и возвращает его содержимое, которое мы вернем как результат работы функции в целом.

gettype

(PHP 4, PHP 5, PHP 7)

gettype — Возвращает тип переменной

Описание

Возвращает тип PHP-переменной var . Для проверки типа переменной используйте функции is_*.

Список параметров

Возвращаемые значения

Возможными значениями возвращаемой строки являются:

  • » boolean «
  • » integer «
  • » double » (по историческим причинам в случае типа float возвращается «double», а не просто «float»)
  • » string «
  • » array «
  • » object «
  • » resource «
  • «resource (closed)» с PHP 7.2.0
  • » NULL «
  • «unknown type»

Примеры

Пример #1 Пример использования gettype()

= array( 1 , 1. , NULL , new stdClass , ‘foo’ );

foreach ( $data as $value ) <
echo gettype ( $value ), «n» ;
>

Результатом выполнения данного примера будет что-то подобное:

Список изменений

ВерсияОписание
7.2.0Для закрытых ресурсов теперь возвращается ‘resource (closed)’. Ранее для закрытых ресурсов возвращалось ‘unknown type’.

Смотрите также

  • settype() — Задает тип переменной
  • get_class() — Возвращает имя класса, к которому принадлежит объект
  • is_array() — Определяет, является ли переменная массивом
  • is_bool() — Проверяет, является ли переменная булевой
  • is_callable() — Проверяет, может ли значение переменной быть вызвано в качестве функции
  • is_float() — Проверяет, является ли переменная числом с плавающей точкой
  • is_int() — Проверяет, является ли переменная целым числом
  • is_null() — Проверяет, является ли значение переменной равным NULL
  • is_numeric() — Проверяет, является ли переменная числом или строкой, содержащей число
  • is_object() — Проверяет, является ли переменная объектом
  • is_resource() — Проверяет, является ли переменная ресурсом
  • is_scalar() — Проверяет, является ли переменная скалярным значением
  • is_string() — Проверяет, является ли переменная строкой
  • function_exists() — Возвращает TRUE, если указанная функция определена
  • method_exists() — Проверяет, существует ли метод в данном классе

User Contributed Notes 11 notes

= 5 / 0 ;
$number2 = sqrt (- 3 );
$number3 = pow ( 0 , 0 );
$number4 = 0 / 0 ;

echo $number . «
» ;
echo $number2 . «
» ;
echo $number3 . «
» ;
echo $number4 . «
» ;
echo «
» ;
echo gettype ( $number ). «
» ;
echo gettype ( $number2 ). «
» ;
echo gettype ( $number3 ). «
» ;
echo gettype ( $number4 );
?>

This will return:
INF
NAN
1
NAN

After some testing I found a bug in my function «myGetType»:
The check for «is_callable» was done before «is_string», so that something like echo myGetType ( «max» ); ?> would output: «function reference» instead of «string»

«is_callable» and «is_string» can’t be checked together in this method, so I’ve removed the check for is_callable because it’s a very rare usage case and if it’s a valid string the check for is_callable never executes because is_string would be reached first (or vice-versa).

So here is the new function without «is_callable»-Check:
/**
* Returns the type of the var passed.
*
* @param mixed $var Variable
* @return string Type of variable
*/
function myGetType ( $var )
<
if ( is_array ( $var )) return «array» ;
if ( is_bool ( $var )) return «boolean» ;
if ( is_float ( $var )) return «float» ;
if ( is_int ( $var )) return «integer» ;
if ( is_null ( $var )) return «NULL» ;
if ( is_numeric ( $var )) return «numeric» ;
if ( is_object ( $var )) return «object» ;
if ( is_resource ( $var )) return «resource» ;
if ( is_string ( $var )) return «string» ;
return «unknown type» ;
>
?>

@langpavel at phpskelet dot org

Doesn’t the gettype return the string already? Using get_class seems to be the only «useful» part of that solution. All that can be reduced to somewhere half in terms of the amount of code.

NaN and #IND will return double or float on gettype, while some inexistent values, like division by zero, will return as a boolean FALSE. 0 by the 0th potency returns 1, even though it is mathematically indetermined.

= 5 / 0 ;
$number2 = sqrt (- 3 );
$number3 = pow ( 0 , 0 );
$number4 = 0 / 0 ;

echo $number . «
» ;
echo $number2 . «
» ;
echo $number3 . «
» ;
echo $number4 . «
» ;
echo «
» ;
echo gettype ( $number ). «
» ;
echo gettype ( $number2 ). «
» ;
echo gettype ( $number3 ). «
» ;
echo gettype ( $number4 );
?>

This will return:


1
1

PHP Warning: Division by zero in Ctest.php on line 2 PHP Warning: Division by zero in C:test.php on line 5

Here is something that had me stumped with regards to gettype and is_object.
Gettype will report an incomplete object as such, whereas is_object will return FALSE.

if (! is_object ( $incomplete_obj )) <
echo ‘This variable is not an object, it is a/an ‘ . gettype ( $incomplete_obj );
>
?>

Will print:
This variable is not an object, it is a/an object

This function returns string representation of type. This is generalization of get_class(). I try to order is_* tests by density of occurence, but is bad idea to use result of this call in conditions for performance reasons, usefull and better than gettype for debugging messages.
Note, that last line should not be never executed.
Also has no sense to make input parameter optional.

function get_type ( $var )
<
if( is_object ( $var ))
return get_class ( $var );
if( is_null ( $var ))
return ‘null’ ;
if( is_string ( $var ))
return ‘string’ ;
if( is_array ( $var ))
return ‘array’ ;
if( is_int ( $var ))
return ‘integer’ ;
if( is_bool ( $var ))
return ‘boolean’ ;
if( is_float ( $var ))
return ‘float’ ;
if( is_resource ( $var ))
return ‘resource’ ;
//throw new NotImplementedException();
return ‘unknown’ ;
>
?>

This is my work around for the gettype warning. Hope some find it useful.

/**
* Returns the type of the passed var
* — PHP warns against using gettype(), this is my workaround
*
* @param mixed $var
* @return string
*/
function myGetType ( $var )
<
if ( is_array ( $var )) return «array» ;
if ( is_bool ( $var )) return «boolean» ;
if ( is_callable ( $var )) return «function reference» ;
if ( is_float ( $var )) return «float» ;
if ( is_int ( $var )) return «integer» ;
if ( is_null ( $var )) return «NULL» ;
if ( is_numeric ( $var )) return «numeric» ;
if ( is_object ( $var )) return «object» ;
if ( is_resource ( $var )) return «resource» ;
if ( is_string ( $var )) return «string» ;
return «unknown type» ;
>
?>

[EDITOR thiago NOTE: Code has been updated by PPKu-N0-SPAM-schy at mediasoft-berlin dot de]

In some rare cases a class instance object returns false when an object but gettype() returns «object».

$save = serialize ( $x );

$obj = unserialize ( $save );
// here sometimes is_object() returns FALSE
if ( is_object ( $x ) || gettype ( $x ) === «object» )
<
// . do something
>
?>

I wrote my own gettype function by just using the default is_? functions, but it took twice as long as gettype. So I decided to use gettype with a twist.

Taking the warnings about gettype to heart, and depending on your custom needs, it’s worthwhile to dynamically test the gettype result with a known variable, and link the result to a predefined result. Like so:

/*
dynamically create an array by using known variable types
link with a predefined value
*/
$R =array();
$R [ gettype ( .0 )]= ‘number’ ;
$R [ gettype ( 0 )]= ‘number’ ;
$R [ gettype ( true )]= ‘boolean’ ;
$R [ gettype ( » )]= ‘string’ ;
$R [ gettype ( null )]= ‘null’ ;
$R [ gettype (array())]= ‘array’ ;
$R [ gettype (new stdClass ())]= ‘object’ ;

// what is
function wis_ ( $v ) <
global $R ;
return $R [ gettype ( $v )];
>

echo wis_ ( ‘hello’ ) . ‘
‘ ; // «string»
echo wis_ ( 24 ) . ‘
‘ ; // «number»
echo wis_ ( 0.24 ) . ‘
‘ ; // «number»
echo wis_ ( null ) . ‘
‘ ; // «null»
echo wis_ ( $R ) . ‘
‘ ; // «array»
?>
You won’t need to worry about changes in gettype’s return strings in future versions.
If the result evaluates to false then you know the variable tested is some «other» type.

I also find these useful
function is_num ( $v )
function is_box ( $v )

echo is_num ( null ) . ‘
‘ ; // false
echo is_num ( false ) . ‘
‘ ; // false
echo is_num ( ‘123’ ) . ‘
‘ ; // false
echo is_num ( 123 ) . ‘
‘ ; // true
echo is_num ( 123.0 ) . ‘
‘ ; // true
?>

this fastest solution I found to identify a variable type without using gettype function:
function typeof ( $var ) <
if ( is_object ( $var ))
return «object» ;

if ( is_resource ( $var ))
return «resource» ;

return (( $var === null ) ? «null» :
(((bool) $var === $var ) ? «bool» :
(((float) $var === $var ) ? «float» :
(((int) $var === $var ) ? «int» :
(((string) $var === $var ) ? «string» :
«unknown»
)
)
)
)
);
>
?>
Maybe someone has a more elegant solution to check for object and resource types.

The complete script — including several identify- and timing functions follow:
#!/usr/bin/php
function typeof_trinary ( $var ) <
if ( is_object ( $var ))
return «object» ;

if ( is_resource ( $var ))
return «resource» ;

return (( $var === null ) ? «null» :
(((bool) $var === $var ) ? «bool» :
(((float) $var === $var ) ? «float» :
(((int) $var === $var ) ? «int» :
(((string) $var === $var ) ? «string» :
«unknown»
)
)
)
)
);
>

function typeof_if_query ( $var ) <

if ( is_object ( $var ))
return «object» ;

if ( is_resource ( $var ))
return «resource» ;

if ((bool) $var === $var )
return «bool» ;

if ((float) $var === $var )
return «float» ;

if ((int) $var === $var )
return «int» ;

if ((string) $var === $var )
return «string» ;

if ( null === $var )
return «null» ;

function typeof_gettype ( $var ) <
return gettype ( $var );
>

echo «start@ » . date ( «Y-m-d H:i:s» ) . «n» ;
echo «$var = $var — gettype($var) = » . gettype ( $var ) . «nn» ;
$time = — microtime ( true );

echo «typeof_if_query($var) = » . typeof_if_query ( $var ) . «n» ;
$time += microtime ( true );
echo «duration: » . sprintf ( «%0.10f» , $time ) . «nn» ;

$time = — microtime ( true );

echo «typeof_gettype($var) = » . typeof_gettype ( $var ) . «n» ;
$time += microtime ( true );
echo «duration: » . sprintf ( «%0.10f» , $time ) . «nn» ;

$time = — microtime ( true );

echo «typeof_trinary($var) = » . typeof_trinary ( $var ) . «n» ;
$time += microtime ( true );
echo «duration: » . sprintf ( «%0.10f» , $time ) . «nn» ;
?>

My console output — try the script several times!:
$ ./gettype.php
start@ 2015-01-10 01:10:37
$var = 100 — gettype($var) = integer

typeof_if_query($var) = int
duration: 0.0000500679

typeof_gettype($var) = integer
duration: 0.0000309944

typeof_trinary($var) = int
duration: 0.0000240803

PHP Data Types

In this tutorial you will learn about the data types available in PHP.

Data Types in PHP

The values assigned to a PHP variable may be of different data types including simple string and numeric types to more complex data types like arrays and objects.

PHP supports total eight primitive data types: Integer, Floating point number or Float, String, Booleans, Array, Object, resource and NULL. These data types are used to construct variables. Now let’s discuss each one of them in detail.

PHP Integers

Integers are whole numbers, without a decimal point (. -2, -1, 0, 1, 2, . ). Integers can be specified in decimal (base 10), hexadecimal (base 16 — prefixed with 0x ) or octal (base 8 — prefixed with 0 ) notation, optionally preceded by a sign ( — or + ).

Example

Note: Since PHP 5.4+ you can also specify integers in binary (base 2) notation. To use binary notation precede the number with 0b (e.g. $var = 0b11111111; ).

PHP Strings

Strings are sequences of characters, where every character is the same as a byte.

A string can hold letters, numbers, and special characters and it can be as large as up to 2GB (2147483647 bytes maximum). The simplest way to specify a string is to enclose it in single quotes (e.g. ‘Hello world!’), however you can also use double quotes («Hello world!»).

Example

You will learn more about strings in PHP Strings tutorial.

PHP Floating Point Numbers or Doubles

Floating point numbers (also known as «floats», «doubles», or «real numbers») are decimal or fractional numbers, like demonstrated in the example below.

Example

PHP Booleans

Booleans are like a switch it has only two possible values either 1 (true) or 0 (false).

Example

PHP Arrays

An array is a variable that can hold more than one value at a time. It is useful to aggregate a series of related items together, for example a set of country or city names.

An array is formally defined as an indexed collection of data values. Each index (also known as the key) of an array is unique and references a corresponding value.

Example

You will learn more about arrays in PHP Array tutorial.

PHP Objects

An object is a data type that not only allows storing data but also information on, how to process that data. An object is a specific instance of a class which serve as templates for objects. Objects are created based on this template via the new keyword.

Every object has properties and methods corresponding to those of its parent class. Every object instance is completely independent, with its own properties and methods, and can thus be manipulated independently of other objects of the same class.

Here’s a simple example of a class definition followed by the object creation.

Example

Tip: The data elements stored within an object are referred to as its properties and the information, or code which describing how to process the data is called the methods of the object.

PHP NULL

The special NULL value is used to represent empty variables in PHP. A variable of type NULL is a variable without any data. NULL is the only possible value of type null.

Example

When a variable is created without a value in PHP like $var; it is automatically assigned a value of null. Many novice PHP developers mistakenly considered both $var1 = NULL; and $var2 = «»; are same, but this is not true. Both variables are different — the $var1 has null value while $var2 indicates no value assigned to it.

PHP Resources

A resource is a special variable, holding a reference to an external resource.

Resource variables typically hold special handlers to opened files and database connections.

Ссылка на основную публикацию
Adblock
detector
×
×