Новые книги

Успех предпринимательской деятельности в современных условиях все возрастающей конкуренции во многом зависит от динамичного и планомерного развития организации. Новая книга К. Рятова, автора монографии «Функциональный менеджмент: Как из хаоса создать порядок, преодолеть неопределенность и добиться успеха» (М.: Альпина Паблишер, 2014), предлагает научно обоснованный подход к проблеме развития и разрушает некоторые распространенные мифы, бытующие в этой области.

Подробный анализ структурно-функциональной модели организаций, человеческого фактора, слагаемых инновационного и системного развития, подкрепленный конкретными примерами и рекомендациями, делает книгу незаменимым помощником для всех, кто хочет добиться успеха в бизнесе.

Издание адресовано предпринимателям, менеджерам, а также преподавателям и студентам экономических вузов, слушателям бизнес-школ, специалистам, занимающимся развитием своих компаний.
В книге описано тестирование программных продуктов в Google: как устроены процессы, как организованы команды, какие техники используются, кто ответственен за качество. Принципы, на которых построено тестирование в Google, применимы в проектах и компаниях любого размера. Авторы книги сами работали над продуктами Google, создавая инструменты тестирования, настраивая процессы и занимаясь непосредственно тестированием. Книга рассчитана на профессионалов из индустрии разработки программного обеспечения: специалистов по тестированию, программистов, менеджеров.

Строки

Учебник РНР
НазадГлава 34. Создание Переменных Вперёд

Строки

Для работы со строками потребуется несколько больше усилий. Как указывалось ранее, все строки, которые будут ассоциированы с структурами внутренних данных Zend, должны быть ассоциированы с использованием собственных функций менеджмента памяти Zend. Ссылки на статические строки или строки, размещённые стандартными способами, не допускаются. Для присвоения строк вы должны получить доступ к структуре str в контейнере zval.value. Соответствующий тип это IS_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);

new_string->type = IS_STRING;
new_string->value.str.len = strlen(string_contents);
new_string->value.str.val = estrdup(string_contents);

Обратите внимание на использование estrdup() Zend'а. Конечно, вы можете также использовать предопределённый макрос ZVAL_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);
ZVAL_STRING(new_string, string_contents, 1);

ZVAL_STRING принимает третий параметр, который указывает, должно ли содержимое строки дублироваться (с использованием estrdup()). Установка этого параметра 1 вызывает дублирование строки; 0 просто использует предоставляемый указатель на содержимое переменной. Этот особенно применимо, если вы хотите создать новую переменную, ссылающуюся на строку, которая уже размещена во внутренней памяти Zend.

Если вы хотите отсечь стоку, начиная с определённой позиции, или уже знаете её длину, вы можете использовать ZVAL_STRINGL(zval, string, length, duplicate), который принимает длину строки как установленную для новой строки. Этот макрос быстрее, чем ZVAL_STRING, и работает безопасно в двоичном режиме.

Для создания пустых строк установите длину строки 0 и используйте empty_string как содержимое:

new_string->type = IS_STRING;
new_string->value.str.len = 0;
new_string->value.str.val = empty_string;

Конечно, для этого также имеется макрос (ZVAL_EMPTY_STRING):

MAKE_STD_ZVAL(new_string);
ZVAL_EMPTY_STRING(new_string);

Назад Оглавление Вперёд
Double (Float) Вверх Булевы