Go beyond the documentation and explore some of what's possible if you stretch symfony to its limits. We will look at a number of aspects of symfony 1.4 and Doctrine 1.2 and tease out some powerful functionality you may not have expected to find, but will doubtless be able to use. Topics covered will include routing, forms, the config cache and record listeners. If you're comfortable in symfony and wondering what's next, this session is for you.
Building Lithium Apps (Like a Boss) was a workshop presented on the structure and philosophy of the Lithium framework and its applications, and how best to take advantage of them.
This talk is an overview of the history of the PHP language and major framework projects that have emerged in the last 5 years. It examines what we've learned in the development of these frameworks, how that education has been brought to bear in Lithium. Most of this talk ended up being me demoing and answering questions, so there's not a lot of content in the slides, sorry.
The Perforce Web Content Management System development team, lacking a pre-existing solution in PHP, designed and implemented their own object model and record layer to ease the interaction of the system with the Perforce Server. This session will focus on how users can access files in Perforce via a simple CRUD API, the subsystems exposed, and their usage.
Go beyond the documentation and explore some of what's possible if you stretch symfony to its limits. We will look at a number of aspects of symfony 1.4 and Doctrine 1.2 and tease out some powerful functionality you may not have expected to find, but will doubtless be able to use. Topics covered will include routing, forms, the config cache and record listeners. If you're comfortable in symfony and wondering what's next, this session is for you.
Building Lithium Apps (Like a Boss) was a workshop presented on the structure and philosophy of the Lithium framework and its applications, and how best to take advantage of them.
This talk is an overview of the history of the PHP language and major framework projects that have emerged in the last 5 years. It examines what we've learned in the development of these frameworks, how that education has been brought to bear in Lithium. Most of this talk ended up being me demoing and answering questions, so there's not a lot of content in the slides, sorry.
The Perforce Web Content Management System development team, lacking a pre-existing solution in PHP, designed and implemented their own object model and record layer to ease the interaction of the system with the Perforce Server. This session will focus on how users can access files in Perforce via a simple CRUD API, the subsystems exposed, and their usage.
Lithium: The Framework for People Who Hate FrameworksNate Abele
This is the presentation was given at ConFoo on March 11th by Nate Abele and Joël Perras, and is an introduction to the architectural problems with other frameworks that Lithium was designed to address, and how it addresses them. It also introduces programming paradigms like functional and aspect-oriented programming which address issues that OOP doesn't account for.
Finally, the talk provides a quick overview of the innovative and unparalleled features that Lithium provides, including the data layer, which supports both relational and non-relational databases.
Slides from the GTA-PHP meetup about the new features in PHP 7. Slides had corresponding RFC pages linked to them in the speaker notes, but they don't seem to correspond to pages here so I've made the original keynote file available at http://gtaphp.org/presentations/NewInPHP7.zip and a PowerPoint version at http://gtaphp.org/presentations/NewInPHP7.pptx.
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)James Titcumb
Have you ever used PHP's built in reflection, only to find you can't do quite what you wanted? What about finding types for parameters or properties? What about reflecting on classes that aren't loaded, so that you can modify them directly?
Better Reflection is an awesome new library that uses magical time-warp techniques* (*actual magic or time-warp not guaranteed) to improve on PHP's built-in reflection by providing additional functionality. In this talk we'll cover what reflection is all about, explore the cool features of Better Reflection already implemented, the difficulties we faced actually writing the thing, and how you can use Better Reflection in your projects to maximise your reflection-fu.
Lithium: The Framework for People Who Hate FrameworksNate Abele
This is the presentation was given at ConFoo on March 11th by Nate Abele and Joël Perras, and is an introduction to the architectural problems with other frameworks that Lithium was designed to address, and how it addresses them. It also introduces programming paradigms like functional and aspect-oriented programming which address issues that OOP doesn't account for.
Finally, the talk provides a quick overview of the innovative and unparalleled features that Lithium provides, including the data layer, which supports both relational and non-relational databases.
Slides from the GTA-PHP meetup about the new features in PHP 7. Slides had corresponding RFC pages linked to them in the speaker notes, but they don't seem to correspond to pages here so I've made the original keynote file available at http://gtaphp.org/presentations/NewInPHP7.zip and a PowerPoint version at http://gtaphp.org/presentations/NewInPHP7.pptx.
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)James Titcumb
Have you ever used PHP's built in reflection, only to find you can't do quite what you wanted? What about finding types for parameters or properties? What about reflecting on classes that aren't loaded, so that you can modify them directly?
Better Reflection is an awesome new library that uses magical time-warp techniques* (*actual magic or time-warp not guaranteed) to improve on PHP's built-in reflection by providing additional functionality. In this talk we'll cover what reflection is all about, explore the cool features of Better Reflection already implemented, the difficulties we faced actually writing the thing, and how you can use Better Reflection in your projects to maximise your reflection-fu.
LESS is a flexible and dynamic way to develop CSS. A developer can quickly utilize CSS3 features, including browser specific implementations, with little effort. LESS is what everyone dreamed CSS could be. With such things as variables, mixins, nested rules and operations. He will show you how to use LESS to make your development process faster and more efficient.
Do you find yourself using full stack frameworks for small sites, but think it's overkill. Micro-frameworks could be your solution.
Sinatra (Ruby) has popularized micro-frameworks, and we have many options in PHP. Jake Smith will introduce you to the current micro-frameworks in PHP and where they are best utilized.
Can't Miss Features of PHP 5.3 and 5.4Jeff Carouth
If you're like me you remember the days of PHP3 and PHP4; you remember when PHP5 was released, and how it was touted to change to your life. It's still changing and there are some features of PHP 5.3 and new ones coming with PHP 5.4 that will improve your code readability and reusability. Let's look at some touted features such as closures, namespaces, and traits, as well as some features being discussed for future releases.
PHP 5.3 has many new features that allow very different paradigms of software development, that may be unfamiliar to many PHP developers. If you want to learn more about functional or aspect-oriented programming, or how to organize your PHP libraries according to the new de facto PHP namespacing standard, don't miss this talk.
Early in year 2000 Robert C. Martin, aka "Uncle Bob", introduced his thoughts in an article about some of five basic principles on object oriented programming to the open world. What he probably did not expect was, that this 5 principles became the standard for object oriented programming.
This Talk is about those principles: Single responsibility, Open/close, Liskov substitution, Interface segregation, and Dependency inversion, or shorter S.O.L.I.D. principles. It will give you an introduction about these principles, their meaning, and where they should be recognized and applied. Examples from my daily work will show you the practical aspects of those principles.
This is a "PHP 201" presentation that was given at the December 2010 Burlington, Vermont PHP Users group meeting. Going beyond the basics, this presentation covered working with arrays, functions, and objects.
Refactoring, Agile Entwicklung, Continuous Integration – all diese für nachhaltigen Erfolg wichtigen Vorgehensweisen setzen Erfahrung mit Unit Testing voraus. Abseits von den üblichen "Bowling"-Beispielen möchten wir gerne einen Crashkurs inkl. Best Practices für das erfolgreiche Unit Testing durchführen. Anhand eines Beispielprojekts auf Basis des Zend Frameworks werden wir nach der Installation von PHPUnit auf allen Notebooks gemeinsam eine kleine Applikation aufbauen, die durchgehend Test-driven entwickelt wird.
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
Cette conférence présente deux grands motifs de conception : l'observateur et l'injection de dépendance. Ce sujet allie à la fois théorie et pratique. Le composant autonome EventDispatcher de Symfony ainsi que le conteneur d'injection de dépendance Pimple sont mis à l'honneur avec des exemples pratiques d'usage. Ces cas pratiques combinent du code de l'ORM Propel ainsi que le composant autonome Zend\Search\Lucene du Zend Framework 2
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
SPL: The Missing Link in Development
1. SPL: The Missing Link in Development
Jake Smith
Dallas PHP - 7/13/2010
2. What is SPL?
• A
library
of
standard
interfaces,
classes,
and
functions
designed
to
solve
common
programming
problems
and
allow
engine
overloading.
Definition Source: http://elizabethmariesmith.com/
3. SPL Background
• Provides Interfaces, Classes and Functions
• As of PHP 5.3 you can not turn off SPL
• Poor documentation root of poor
adoption.
10. iterator_to_array
• Takes an iterator object, an object that
implements Traversable
• All iterators implement Traversable
11. spl_object_hash
• MD5 hash of internal pointer
• When objects are destroyed their object
hash is released
• Object Hash ID can/will be reused after
destruction.
13. ArrayObject
• Allows objects to act like arrays
• Does not allow usage of array functions on
object
• Built in methods: ksort, usort, asort,
getArrayCopy
14. SplFileInfo
• Object that returns information on Files/
Folders
• isDir, isFile, isReadable, isWritable, getPerms
(returns int), etc.
Example Source: http://us3.php.net/manual/en/class.splfileinfo.php
17. SplSubject
<?php
class ExceptionHandler implements SplSubject
{
private $_observers = array();
public function attach(SplObserver $observer)
{
$id = spl_object_hash($observer);
$this->_observers[$id] = $observer;
}
public function detach(SplObserver $observer)
{
$id = spl_object_hash($observer);
unset($this->_observers[$id]);
}
public function notify()
{
foreach($this->_observers as $obs) {
$obs->update($this);
}
}
public function handle(Exception $e)
{
$this->exception = $e;
$this->notify();
}
}
Example Source: http://devzone.zend.com/article/12229
18. SplObserver
Class Mailer implements SplObserver {
public function update(SplSubject $subject)
{
// Do something with subject object
}
}
// Create the ExceptionHandler
$handler = new ExceptionHandler();
// Attach an Exception Logger and Mailer
$handler->attach(new Mailer());
// Set ExceptionHandler::handle() as the default
set_exception_handler(array($handler, 'handle'));
Example Source: http://devzone.zend.com/article/12229
19. ArrayAccess
• OffsetExists - Values exists for key, returns
boolean
• OffsetSet - Set value for key
• OffsetGet - Return value for key
• OffsetUnset - Remove value from array
• Note that if the array is numerically indexed, a call to array_values() will be required to re-index
the array if that is the behaviour required.
Example Source: http://www.phpro.org/tutorials/Introduction-to-SPL-ArrayAccess.html
20. ArrayAccess Example
<?php
class book implements ArrayAccess
{
public $title;
public $author;
public $isbn;
public function offsetExists( $offset )
{
return isset( $this->$offset );
}
public function offsetSet( $offset, $value)
{
$this->$offset = $value;
}
public function offsetGet( $offset )
{
return $this->$offset;
}
public function offsetUnset( $offset )
{
unset( $this->$offset );
}
}
Example Source: http://www.phpro.org/tutorials/Introduction-to-SPL-ArrayAccess.html
21. Iterator
• Provides basic iterator functionality
(foreach)
• Interface requires the following methods
• current(), key(), next(), rewind(), valid()
22. Recursive Iterator
• A foreach only goes top level, but many
times you need to dig deeper
• Recursive Iterator extends Iterator and
requires hasChildren() and getChildren()
23. Countable
• Internal Counter
<?php
class loopy
{
public function count()
{
static $count = 0;
return $count++;
}
public function access()
{
$this->count();
// Method logic
}
}
24. SeekableIterator
• Other iterators must start at beginning of
an array, but seekable allows you to change
iteration start point.
<?php
class PartyMemberIterator implements SeekableIterator
{
public function seek($index)
{
$this->rewind();
$position = 0;
while ($position < $index && $this->valid()) {
$this->next();
$position++;
}
if (!$this->valid()) {
throw new OutOfBoundsException('Invalid position');
}
}
Example Source: http://devzone.zend.com/article/2565
27. ArrayIterator
<?php
// Using While
/*** create a new object ***/
$object = new ArrayIterator($array);
/*** rewind to the beginning of the array ***/
$object->rewind();
/*** check for valid member ***/
while($object->valid())
{
/*** echo the key and current value ***/
echo $object->key().' -> '.$object->current().'<br />';
/*** hop to the next array member ***/
$object->next();
}
// Using Foreach
$object = new ArrayIterator($array);
foreach($object as $key=>$value)
{
echo $key.' => '.$value.'<br />';
}
Example Source: http://www.phpro.org/tutorials/Introduction-to-SPL.html#6
28. LimitIterator
• Used similar to Limit in SQL
<?php
// Show 10 files/folders starting from the 3rd.
$offset = 3;
$limit = 10;
$filepath = '/var/www/vhosts/mysite/images'
$it = new LimitIterator(new DirectoryIterator($filepath), $offset, $limit);
foreach($it as $r)
{
// output the key and current array value
echo $it->key().' -- '.$it->current().'<br />';
}
30. DirectoryIterator
<?php <?php
$hdl = opendir('./'); try
while ($dirEntry = readdir($hdl)) {
{ /*** class create new DirectoryIterator Object ***/
if (substr($dirEntry, 0, 1) != '.') foreach ( new DirectoryIterator('./') as $Item )
{ {
if(!is_file($dirEntry)) echo $Item.'<br />';
{ }
continue; }
} /*** if an exception is thrown, catch it here ***/
$listing[] = $dirEntry; catch(Exception $e)
} {
} echo 'No files Found!<br />';
closedir($hdl); }
foreach($listing as $my_file)
{
echo $my_file.'<br />';
}
31. RecursiveDirectory
Iterator
• Move out of the top level and get all
children files/folders
<?php
$dir = '/Users/jsmith/Sites/vhosts/test.local/wwwroot';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
// could use CHILD_FIRST if you so wish
foreach ($iterator as $file) {
echo $file . "<br />";
}
32. GlobIterator (5.3)
• Very Similar to DirectoryIterator
• Only use if you want to convert old glob
code into an iterator object
• returns SplFileInfo Objects
35. SplFixedArray
• Array with pre-defined dimensions
• Shows great speed for setting and
retrieving
• If you change Array dimensions, it will
crawl.
36. SplHeap
• Automatically reorder after insert, based
off of compare() method
• Extract is similar to array_shift()
• Great memory usage!
Example Source: http://www.slideshare.net/tobias382/new-spl-features-in-php-53
37. SplMaxHeap
• Subclass of SplHeap
• When you extract() a value it will return in
order from greatest to least
<?php
$heap = new SplMaxHeap();
$heap->insert('b');
$heap->insert('a');
$heap->insert('c');
echo $heap->extract()."n";
echo $heap->extract()."n";
echo $heap->extract()."n";
// OUTPUT:
// c
// b
// a
Example Source: http://www.alberton.info/php_5.3_spl_data_structures.html
38. SplMinHeap
• Subclass of SplHeap
• When you extract() a value it will return in
order from least to greatest
<?php
$heap = new SplMinHeap();
$heap->insert('b');
$heap->insert('a');
$heap->insert('c');
echo $heap->extract()."n";
echo $heap->extract()."n";
echo $heap->extract()."n";
// OUTPUT:
// a
// b
// c
Example Source: http://www.alberton.info/php_5.3_spl_data_structures.html
39. SplDoublyLinkedList
• Do not know size of list/array
• Can only be read sequentially
• Less processing power required, on large
data sets provides better memory usage