Best Atoum code snippet using phpString
updater.php
Source:updater.php
1<?php2namespace Bitrix\Perfmon\Sql;3use Bitrix\Main\NotSupportedException;4use Bitrix\Perfmon\Php;5class Updater6{7 protected $dbType = '';8 protected $delimiter = '';9 /** @var \Bitrix\Perfmon\Sql\Table */10 protected $tableCheck = null;11 protected $conditions = array();12 /** @var \Bitrix\Perfmon\Php\Statement[]*/13 protected $statements = array();14 /**15 * Sets database type. Currently supported:16 * - MYSQL17 * - ORACLE18 * - MSSQL19 *20 * @param string $dbType Database type.21 *22 * @return Updater23 */24 public function setDbType($dbType = '')25 {26 $this->dbType = (string)$dbType;27 return $this;28 }29 /**30 * Sets DDL delimiter for parsing.31 *32 * @param string $delimiter DDL statements delimiter.33 *34 * @return Updater35 */36 public function setDelimiter($delimiter = '')37 {38 $this->delimiter = (string)$delimiter;39 return $this;40 }41 /**42 * Returns array of generated statements.43 *44 * @return \Bitrix\Perfmon\Php\Statement[]45 */46 public function getStatements()47 {48 return $this->statements;49 }50 /**51 * Produces updater code.52 *53 * @param string $sourceSql Source DDL statements.54 * @param string $targetSql Target DDL statements.55 *56 * @return string57 * @throws NotSupportedException58 */59 public function generate($sourceSql, $targetSql)60 {61 $source = new Schema;62 $source->createFromString($sourceSql, $this->delimiter);63 $target = new Schema;64 $target->createFromString($targetSql, $this->delimiter);65 $diff = Compare::diff($source ,$target);66 if ($diff)67 {68 $sourceTables = $source->tables->getList();69 if ($sourceTables)70 {71 $this->tableCheck = array_shift($sourceTables);72 }73 else74 {75 $targetTables = $target->tables->getList();76 if ($targetTables)77 {78 $this->tableCheck = array_shift($targetTables);79 }80 else81 {82 $this->tableCheck = null;83 }84 }85 if (!$this->tableCheck)86 throw new NotSupportedException("no CHECK TABLE found.");87 $php = $this->handle($diff);88 return89 "if (\$updater->CanUpdateDatabase() && \$updater->TableExists('".EscapePHPString($this->tableCheck->name)."'))\n".90 "{\n".91 "\tif (\$DB->type == \"".EscapePHPString($this->dbType)."\")\n".92 "\t{\n".93 $php.94 "\t}\n".95 "}\n";96 }97 else98 {99 return "";100 }101 }102 /**103 * @param array $diff Difference pairs.104 *105 * @return string106 */107 protected function handle(array $diff)108 {109 $this->conditions = array();110 foreach ($diff as $pair)111 {112 if (!isset($pair[0]))113 {114 $this->handleCreate($pair[1]);115 }116 elseif (!isset($pair[1]))117 {118 $this->handleDrop($pair[0]);119 }120 else121 {122 $this->handleChange($pair[0], $pair[1]);123 }124 }125 $result = "";126 foreach ($this->conditions as $condition => $statements)127 {128 $result .= $condition;129 if ($condition)130 $result .= "\t\t{\n";131 $result .= implode("", $statements);132 if ($condition)133 $result .= "\t\t}\n";134 }135 return $result;136 }137 /**138 * @param BaseObject $object Database schema object.139 *140 * @return void141 */142 protected function handleCreate(BaseObject $object)143 {144 if ($object instanceof Sequence || $object instanceof Procedure)145 {146 $ddl = $object->getCreateDdl($this->dbType);147 $this->conditions[""][] = $this->multiLinePhp("\t\t\$DB->Query(\"", $ddl, "\", true);\n");148 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);");149 $stmt->addCondition("\$updater->CanUpdateDatabase()");150 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");151 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($this->tableCheck->getLowercasedName())."\")");152 }153 elseif ($object instanceof Table)154 {155 $ddl = $object->getCreateDdl($this->dbType);156 $predicate = "!\$updater->TableExists(\"".EscapePHPString($object->name)."\")";157 $cond = "\t\tif ($predicate)\n";158 $this->conditions[$cond][] = $this->multiLinePhp("\t\t\t\$DB->Query(\"\n\t\t\t\t", str_replace("\n", "\n\t\t\t\t", $ddl), "\n\t\t\t\");\n");159 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);");160 $stmt->addCondition("\$updater->CanUpdateDatabase()");161 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");162 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($this->tableCheck->getLowercasedName())."\")");163 $stmt->addCondition("!\$updater->TableExists(\"".EscapePHPString($object->getLowercasedName())."\")");164 }165 elseif ($object instanceof Column)166 {167 $ddl = $object->getCreateDdl($this->dbType);168 $predicate = "\$updater->TableExists(\"".EscapePHPString($object->parent->name)."\")";169 $cond = "\t\tif ($predicate)\n";170 $predicate2 = "!\$DB->Query(\"SELECT ".EscapePHPString($object->name)." FROM ".EscapePHPString(strtolower($object->parent->name))." WHERE 1=0\", true)";171 $this->conditions[$cond][] =172 "\t\t\tif ($predicate2)\n".173 "\t\t\t{\n".174 $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $ddl, "\");\n").175 "\t\t\t}\n";176 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");");177 $stmt->addCondition("\$updater->CanUpdateDatabase()");178 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");179 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($object->parent->getLowercasedName())."\")");180 $stmt->addCondition("!\$DB->Query(\"SELECT ".EscapePHPString($object->name)." FROM ".EscapePHPString($object->parent->getLowercasedName())." WHERE 1=0\", true)");181 }182 elseif ($object instanceof Index)183 {184 $ddl = $object->getCreateDdl($this->dbType);185 $predicate = "\$updater->TableExists(\"".EscapePHPString($object->parent->name)."\")";186 $cond = "\t\tif ($predicate)\n";187 $predicate2 = "!\$DB->IndexExists(\"".EscapePHPString($object->parent->name)."\", array(".$this->multiLinePhp("\"", $object->columns, "\", ")."))";188 $this->conditions[$cond][] =189 "\t\t\tif ($predicate2)\n".190 "\t\t\t{\n".191 $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $ddl, "\");\n").192 "\t\t\t}\n";193 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");");194 $stmt->addCondition("\$updater->CanUpdateDatabase()");195 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");196 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($object->parent->getLowercasedName())."\")");197 $stmt->addCondition("!\$DB->IndexExists(\"".EscapePHPString($object->parent->getLowercasedName())."\", array(".$this->multiLinePhp("\"", $object->columns, "\", ")."))");198 }199 elseif ($object instanceof Trigger || $object instanceof Constraint)200 {201 $ddl = $object->getCreateDdl($this->dbType);202 $predicate = "\$updater->TableExists(\"".EscapePHPString($object->parent->name)."\")";203 $cond = "\t\tif ($predicate)\n";204 $this->conditions[$cond][] = $this->multiLinePhp("\t\t\t\$DB->Query(\"", $ddl, "\", true);\n");205 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);");206 $stmt->addCondition("\$updater->CanUpdateDatabase()");207 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");208 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($object->parent->getLowercasedName())."\")");209 }210 else211 {212 $this->conditions[""][] = "\t\t//create for ".get_class($object)." not supported yet\n";213 $stmt = $this->createStatement("", "//create for ".get_class($object)." not supported yet", "");214 }215 216 if ($stmt)217 {218 $this->statements[] = $stmt;219 }220 }221 /**222 * @param BaseObject $object Database schema object.223 *224 * @return void225 */226 protected function handleDrop(BaseObject $object)227 {228 if ($object instanceof Sequence || $object instanceof Procedure)229 {230 $ddl = $object->getDropDdl($this->dbType);231 $this->conditions[""][] = "\t\t\$DB->Query(\"".EscapePHPString($ddl)."\", true);\n";232 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);");233 $stmt->addCondition("\$updater->CanUpdateDatabase()");234 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");235 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($this->tableCheck->getLowercasedName())."\")");236 }237 elseif ($object instanceof Table)238 {239 $ddl = $object->getDropDdl($this->dbType);240 $predicate = "\$updater->TableExists(\"".EscapePHPString($object->name)."\")";241 $cond = "\t\tif ($predicate)\n";242 $this->conditions[$cond][] = $this->multiLinePhp("\t\t\t\$DB->Query(\"", $ddl, "\");\n");243 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");");244 $stmt->addCondition("\$updater->CanUpdateDatabase()");245 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");246 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($object->getLowercasedName())."\")");247 }248 elseif ($object instanceof Column)249 {250 $ddl = $object->getDropDdl($this->dbType);251 $predicate = "\$updater->TableExists(\"".EscapePHPString($object->parent->name)."\")";252 $cond = "\t\tif ($predicate)\n";253 $predicate2 = "\$DB->Query(\"SELECT ".EscapePHPString($object->name)." FROM ".EscapePHPString($object->parent->name)." WHERE 1=0\", true)";254 $this->conditions[$cond][] =255 "\t\t\tif ($predicate2)\n".256 "\t\t\t{\n".257 $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $ddl, "\");\n").258 "\t\t\t}\n";259 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");");260 $stmt->addCondition("\$updater->CanUpdateDatabase()");261 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");262 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($object->parent->getLowercasedName())."\")");263 $stmt->addCondition("\$DB->Query(\"SELECT ".EscapePHPString($object->name)." FROM ".EscapePHPString($object->parent->getLowercasedName())." WHERE 1=0\", true)");264 }265 elseif ($object instanceof Index)266 {267 $ddl = $object->getDropDdl($this->dbType);268 $predicate = "\$updater->TableExists(\"".EscapePHPString($object->parent->name)."\")";269 $cond = "\t\tif ($predicate)\n";270 $predicate2 = "\$DB->IndexExists(\"".EscapePHPString($object->parent->name)."\", array(".$this->multiLinePhp("\"", $object->columns, "\", ")."))";271 $this->conditions[$cond][] =272 "\t\t\tif ($predicate2)\n".273 "\t\t\t{\n".274 $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $ddl, "\");\n").275 "\t\t\t}\n";276 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");");277 $stmt->addCondition("\$updater->CanUpdateDatabase()");278 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");279 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($object->parent->getLowercasedName())."\")");280 $stmt->addCondition("\$DB->IndexExists(\"".EscapePHPString($object->parent->getLowercasedName())."\", array(".$this->multiLinePhp("\"", $object->columns, "\", ")."))");281 }282 elseif ($object instanceof Trigger || $object instanceof Constraint)283 {284 $ddl = $object->getDropDdl($this->dbType);285 $predicate = "\$updater->TableExists(\"".EscapePHPString($object->parent->name)."\")";286 $cond = "\t\tif ($predicate)\n";287 $this->conditions[$cond][] = $this->multiLinePhp("\t\t\t\$DB->Query(\"", $ddl, "\", true);\n");288 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);");289 $stmt->addCondition("\$updater->CanUpdateDatabase()");290 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");291 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($object->parent->getLowercasedName())."\")");292 }293 else294 {295 $this->conditions[""][] = "\t\t//drop for ".get_class($object)." not supported yet\n";296 $stmt = $this->createStatement("", "//drop for ".get_class($object)." not supported yet", "");297 }298 if ($stmt)299 {300 $this->statements[] = $stmt;301 }302 }303 /**304 * @param BaseObject $source Source object.305 * @param BaseObject $target Target object.306 *307 * @return void308 */309 protected function handleChange(BaseObject $source, BaseObject $target)310 {311 if ($source instanceof Sequence || $source instanceof Procedure)312 {313 $this->conditions[""][] =314 $this->multiLinePhp("\t\t\$DB->Query(\"", $source->getDropDdl($this->dbType), "\", true);\n").315 $this->multiLinePhp("\t\t\$DB->Query(\"", $target->getCreateDdl($this->dbType), "\", true);\n");316 $dropStmt = $this->createStatement("\$DB->Query(\"", $source->getDropDdl($this->dbType), "\", true);");317 $createStmt = $this->createStatement("\$DB->Query(\"", $target->getCreateDdl($this->dbType), "\", true);");318 $stmt = new Php\Statement;319 $stmt->merge($dropStmt);320 $stmt->merge($createStmt);321 $stmt->addCondition("\$updater->CanUpdateDatabase()");322 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");323 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($this->tableCheck->getLowercasedName())."\")");324 }325 elseif ($target instanceof Column)326 {327 $ddl = $source->getModifyDdl($target, $this->dbType);328 $predicate = "\$updater->TableExists(\"".EscapePHPString($source->parent->name)."\")";329 $cond = "\t\tif ($predicate)\n";330 $predicate2 = "\$DB->Query(\"SELECT ".EscapePHPString($source->name)." FROM ".EscapePHPString($source->parent->name)." WHERE 1=0\", true)";331 $this->conditions[$cond][] =332 "\t\t\tif ($predicate2)\n".333 "\t\t\t{\n".334 $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $ddl, "\");\n").335 "\t\t\t}\n";336 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\");");337 $stmt->addCondition("\$updater->CanUpdateDatabase()");338 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");339 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($source->parent->getLowercasedName())."\")");340 $stmt->addCondition("\$DB->Query(\"SELECT ".EscapePHPString($source->name)." FROM ".EscapePHPString($source->parent->getLowercasedName())." WHERE 1=0\", true)");341 }342 elseif ($source instanceof Index)343 {344 $this->conditions["\t\tif (\$updater->TableExists(\"".EscapePHPString($source->parent->name)."\"))\n"][] =345 "\t\t\tif (\$DB->IndexExists(\"".EscapePHPString($source->parent->name)."\", array(".$this->multiLinePhp("\"", $source->columns, "\", ").")))\n".346 "\t\t\t{\n".347 $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $source->getDropDdl($this->dbType), "\");\n").348 $this->multiLinePhp("\t\t\t\t\$DB->Query(\"", $target->getCreateDdl($this->dbType), "\");\n").349 "\t\t\t}\n";350 $dropStmt = $this->createStatement("\$DB->Query(\"", $source->getDropDdl($this->dbType), "\", true);");351 $createStmt = $this->createStatement("\$DB->Query(\"", $target->getCreateDdl($this->dbType), "\", true);");352 $stmt = new Php\Statement;353 $stmt->merge($dropStmt);354 $stmt->merge($createStmt);355 $stmt->addCondition("\$updater->CanUpdateDatabase()");356 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");357 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($source->parent->getLowercasedName())."\")");358 $stmt->addCondition("\$DB->IndexExists(\"".EscapePHPString($source->parent->getLowercasedName())."\", array(".$this->multiLinePhp("\"", $source->columns, "\", ")."))");359 $stmt->addCondition("!\$DB->IndexExists(\"".EscapePHPString($target->parent->getLowercasedName())."\", array(".$this->multiLinePhp("\"", $target->columns, "\", ")."))");360 }361 elseif ($source instanceof Trigger || $source instanceof Constraint)362 {363 $ddl = $source->getModifyDdl($target, $this->dbType);364 $predicate = "\$updater->TableExists(\"".EscapePHPString($source->parent->name)."\")";365 $cond = "\t\tif ($predicate)\n";366 $this->conditions[$cond][] = $this->multiLinePhp("\t\t\t\$DB->Query(\"", $ddl, "\", true);\n");367 $stmt = $this->createStatement("\$DB->Query(\"", $ddl, "\", true);");368 $stmt->addCondition("\$updater->CanUpdateDatabase()");369 $stmt->addCondition("\$DB->type == \"".EscapePHPString($this->dbType)."\"");370 $stmt->addCondition("\$updater->TableExists(\"".EscapePHPString($source->parent->getLowercasedName())."\")");371 }372 else373 {374 $this->conditions[""][] = "\t\t//change for ".get_class($source)." not supported yet\n";375 $stmt = $this->createStatement("", "//change for ".get_class($source)." not supported yet", "");376 }377 if ($stmt)378 {379 $this->statements[] = $stmt;380 }381 }382 /**383 * Returns escaped php code repeated for body? prefixed with $prefix and suffixed with $suffix.384 *385 * @param string $prefix Prefix string for each from body.386 * @param array|string $body Strings to be escaped.387 * @param string $suffix Suffix string for each from body.388 *389 * @return string390 */391 protected function multiLinePhp($prefix, $body, $suffix)392 {393 $result = array();394 if (is_array($body))395 {396 foreach ($body as $line)397 {398 $result[] = $prefix.EscapePHPString($line).$suffix;399 }400 }401 else402 {403 $result[] = $prefix.EscapePHPString($body).$suffix;404 }405 return implode("", $result);406 }407 /**408 * Returns Php\Statement object with escaped php code repeated for body? prefixed with $prefix and suffixed with $suffix.409 *410 * @param string $prefix Prefix string for each from body.411 * @param array|string $body Strings to be escaped.412 * @param string $suffix Suffix string for each from body.413 *414 * @return \Bitrix\Perfmon\Php\Statement415 */416 protected function createStatement($prefix, $body, $suffix)417 {418 $result = new Php\Statement;419 if (is_array($body))420 {421 foreach ($body as $line)422 {423 $result->addLine($prefix.EscapePHPString($line).$suffix);424 }425 }426 else427 {428 $result->addLine($prefix.EscapePHPString($body).$suffix);429 }430 return $result;431 }432}...
phpString
Using AI Code Generation
1use \mageekguy\atoum\phpString;2use \mageekguy\atoum;3use \mageekguy\atoum\phpString;4use \mageekguy\atoum;5use \mageekguy\atoum\phpString;6use \mageekguy\atoum;7use \mageekguy\atoum\phpString;8use \mageekguy\atoum;9use \mageekguy\atoum\phpString;10use \mageekguy\atoum;11use \mageekguy\atoum\phpString;12use \mageekguy\atoum;13use \mageekguy\atoum\phpString;14use \mageekguy\atoum;15use \mageekguy\atoum\phpString;16use \mageekguy\atoum;17use \mageekguy\atoum\phpString;18use \mageekguy\atoum;19use \mageekguy\atoum\phpString;20use \mageekguy\atoum;21use \mageekguy\atoum\phpString;22use \mageekguy\atoum;
phpString
Using AI Code Generation
1require_once 'atoum.php';2$myString = new phpString('Hello World');3$myString->toLower();4echo $myString->get();5$myString->toUpper();6echo $myString->get();7$myString->toTitle();8echo $myString->get();9$myString->toReverse();10echo $myString->get();11$myString->toLength();12echo $myString->get();13$myString->toSubstr(0, 5);14echo $myString->get();15$myString->toTrim();16echo $myString->get();17$myString->toWordCount();18echo $myString->get();19$myString->toExplode(' ');20print_r($myString->get());21$myString->toImplode();22echo $myString->get();23$myString->toShuffle();24echo $myString->get();25$myString->toMd5();26echo $myString->get();27$myString->toSha1();28echo $myString->get();29$myString->toLtrim();30echo $myString->get();31$myString->toRtrim();32echo $myString->get();33$myString->toStrrchr('W');34echo $myString->get();35$myString->toStrchr('W');36echo $myString->get();37$myString->toStrpos('W');38echo $myString->get();39$myString->toStrrpos('W');40echo $myString->get();41$myString->toStrrev();42echo $myString->get();43$myString->toStrtolower();44echo $myString->get();45$myString->toStrtoupper();46echo $myString->get();47$myString->toStrlen();48echo $myString->get();49$myString->toStrWordCount();50echo $myString->get();51$myString->toStrShuffle();52echo $myString->get();53$myString->toStrSplit(2);54print_r($myString->get());55$myString->toStrReplace('World', 'Atoum');56echo $myString->get();57$myString->toStrPad(25, '-');58echo $myString->get();59$myString->toStrRepeat(2);60echo $myString->get();61$myString->toStrIreplace('WORLD', 'Atou
phpString
Using AI Code Generation
1require_once 'phpString.php';2use \mageekguy\atoum\phpString;3$obj = new phpString();4$obj->substr('Hello World', 3, 5);5require_once 'phpString.php';6use \mageekguy\atoum\phpString;7$obj = new phpString();8$obj->substr('Hello World', 3, 5);9require_once 'phpString.php';10use \mageekguy\atoum\phpString;11$obj = new phpString();12$obj->substr('Hello World', 3, 5);13require_once 'phpString.php';14use \mageekguy\atoum\phpString;15$obj = new phpString();16$obj->substr('Hello World', 3, 5);17require_once 'phpString.php';18use \mageekguy\atoum\phpString;19$obj = new phpString();
phpString
Using AI Code Generation
1require_once 'phpString.php';2$string = new phpString();3$string->reverse('Hello World');4require_once 'phpString.php';5$string = new phpString();6$string->reverse('Hello World');7require_once 'phpString.php';8$string = new phpString();9$string->reverse('Hello World');10require_once 'phpString.php';11$string = new phpString();12$string->reverse('Hello World');13require_once 'phpString.php';14$string = new phpString();15$string->reverse('Hello World');16require_once 'phpString.php';17$string = new phpString();18$string->reverse('Hello World');19require_once 'phpString.php';20$string = new phpString();21$string->reverse('Hello World');22require_once 'phpString.php';23$string = new phpString();24$string->reverse('Hello World');25require_once 'phpString.php';26$string = new phpString();27$string->reverse('Hello World');
phpString
Using AI Code Generation
1$phpString = new phpString();2echo $phpString->getLength("Hello world");3echo $phpString->getLength("Hello world");4{5 public function getLength($string)6 {7 return strlen($string);8 }9}
phpString
Using AI Code Generation
1include_once '../phpString.php';2$phpString = new phpString();3echo $phpString->str_word_count('Hello world!');4include_once '../phpString.php';5$phpString = new phpString();6echo $phpString->str_word_count('Hello world!');7include_once '../phpString.php';8$phpString = new phpString();9echo $phpString->str_word_count('Hello world!');10include_once '../phpString.php';11$phpString = new phpString();12echo $phpString->str_word_count('Hello world!');13include_once '../phpString.php';14$phpString = new phpString();15echo $phpString->str_word_count('Hello world!');16include_once '../phpString.php';17$phpString = new phpString();18echo $phpString->str_word_count('Hello world!');19include_once '../phpString.php';20$phpString = new phpString();21echo $phpString->str_word_count('Hello world!');22include_once '../phpString.php';23$phpString = new phpString();24echo $phpString->str_word_count('Hello world!');
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Trigger Selenium automation tests on a cloud-based Grid of 3000+ real browsers and operating systems.
Test now for FreeGet 100 minutes of automation test minutes FREE!!