PHP Cookbook: Modern Code Solutions for Professional Developers

PHP Cookbook: Modern Code Solutions for Professional Developers

PHP Cookbook: Modern Code Solutions for Professional Developers
Автор: Mann Eric A.
Дата выхода: 2023
Издательство: O’Reilly Media, Inc.
Количество страниц: 434
Размер файла: 2.1 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Cover....1

Copyright....3

Table of Contents....6

Preface....12

Who This Book Is For....13

Navigating This Book....13

Conventions Used in This Book....14

Programming Conventions....14

Typographical Conventions....14

O’Reilly Online Learning....15

How to Contact Us....15

Acknowledgments....16

Chapter 1. Variables....18

1.1 Defining Constants....20

Problem....20

Solution....20

Discussion....20

See Also....21

1.2 Creating Variable Variables....21

Problem....21

Solution....21

Discussion....22

See Also....23

1.3 Swapping Variables in Place....24

Problem....24

Solution....24

Discussion....24

See Also....26

Chapter 2. Operators....28

2.1 Using a Ternary Operator Instead of an If-Else Block....32

Problem....32

Solution....32

Discussion....32

See Also....34

2.2 Coalescing Potentially Null Values....34

Problem....34

Solution....34

Discussion....34

See Also....35

2.3 Comparing Identical Values....35

Problem....35

Solution....35

Discussion....35

See Also....37

2.4 Using the Spaceship Operator to Sort Values....37

Problem....37

Solution....38

Discussion....39

See Also....39

2.5 Suppressing Diagnostic Errors with an Operator....40

Problem....40

Solution....40

Discussion....40

See Also....41

2.6 Comparing Bits Within Integers....41

Problem....41

Solution....41

Discussion....41

See Also....44

Chapter 3. Functions....46

3.1 Accessing Function Parameters....48

Problem....48

Solution....48

Discussion....49

See Also....50

3.2 Setting a Function’s Default Parameters....50

Problem....50

Solution....50

Discussion....51

See Also....52

3.3 Using Named Function Parameters....52

Problem....52

Solution....52

Discussion....52

See Also....53

3.4 Enforcing Function Argument and Return Typing....54

Problem....54

Solution....54

Discussion....54

See Also....57

3.5 Defining a Function with a Variable Number of Arguments....57

Problem....57

Solution....57

Discussion....57

See Also....58

3.6 Returning More Than One Value....59

Problem....59

Solution....59

Discussion....59

See Also....60

3.7 Accessing Global Variables from Within a Function....61

Problem....61

Solution....61

Discussion....61

See Also....64

3.8 Managing State Within a Function Across Multiple Invocations....64

Problem....64

Solution....64

Discussion....65

See Also....67

3.9 Defining Dynamic Functions....67

Problem....67

Solution....67

Discussion....67

See Also....68

3.10 Passing Functions as Parameters to Other Functions....68

Problem....68

Solution....68

Discussion....69

See Also....71

3.11 Using Concise Function Definitions (Arrow Functions)....71

Problem....71

Solution....71

Discussion....71

See Also....73

3.12 Creating a Function with No Return Value....73

Problem....73

Solution....73

Discussion....74

See Also....75

3.13 Creating a Function That Does Not Return....75

Problem....75

Solution....75

Discussion....75

See Also....76

Chapter 4. Strings....78

4.1 Accessing Substrings Within a Larger String....81

Problem....81

Solution....81

Discussion....81

See Also....82

4.2 Extracting One String from Within Another....82

Problem....82

Solution....83

Discussion....83

See Also....84

4.3 Replacing Part of a String....84

Problem....84

Solution....84

Discussion....85

See Also....87

4.4 Processing a String One Byte at a Time....87

Problem....87

Solution....87

Discussion....88

See Also....89

4.5 Generating Random Strings....89

Problem....89

Solution....89

Discussion....90

See Also....90

4.6 Interpolating Variables Within a String....90

Problem....90

Solution....91

Discussion....91

See Also....92

4.7 Concatenating Multiple Strings Together....92

Problem....92

Solution....92

Discussion....92

See Also....94

4.8 Managing Binary Data Stored in Strings....94

Problem....94

Solution....95

Discussion....95

See Also....97

Chapter 5. Numbers....98

5.1 Validating a Number Within a Variable....99

Problem....99

Solution....99

Discussion....100

See Also....101

5.2 Comparing Floating-Point Numbers....101

Problem....101

Solution....101

Discussion....101

See Also....103

5.3 Rounding Floating-Point Numbers....103

Problem....103

Solution....103

Discussion....103

See Also....104

5.4 Generating Truly Random Numbers....105

Problem....105

Solution....105

Discussion....105

See Also....106

5.5 Generating Predictable Random Numbers....106

Problem....106

Solution....106

Discussion....107

See Also....108

5.6 Generating Weighted Random Numbers....108

Problem....108

Solution....108

Discussion....109

See Also....111

5.7 Calculating Logarithms....111

Problem....111

Solution....111

Discussion....111

See Also....111

5.8 Calculating Exponents....111

Problem....111

Solution....112

Discussion....112

See Also....112

5.9 Formatting Numbers as Strings....113

Problem....113

Solution....113

Discussion....113

See Also....114

5.10 Handling Very Large or Very Small Numbers....114

Problem....114

Solution....114

Discussion....114

See Also....116

5.11 Converting Numbers Between Numerical Bases....116

Problem....116

Solution....116

Discussion....116

See Also....117

Chapter 6. Dates and Times....118

6.1 Finding the Current Date and Time....119

Problem....119

Solution....119

Discussion....120

See Also....121

6.2 Formatting Dates and Times....121

Problem....121

Solution....121

Discussion....122

See Also....124

6.3 Converting Dates and Times to Unix Timestamps....124

Problem....124

Solution....124

Discussion....124

See Also....125

6.4 Converting from Unix Timestamps to Date and Time Parts....126

Problem....126

Solution....126

Discussion....126

See Also....127

6.5 Computing the Difference Between Two Dates....127

Problem....127

Solution....127

Discussion....127

See Also....128

6.6 Parsing Dates and Times from Arbitrary Strings....128

Problem....128

Solution....129

Discussion....129

See Also....131

6.7 Validating a Date....131

Problem....131

Solution....132

Discussion....132

See Also....132

6.8 Adding to or Subtracting from a Date....132

Problem....132

Solution....132

Discussion....133

See Also....136

6.9 Calculating Times Across Time Zones....136

Problem....136

Solution....136

Discussion....136

See Also....138

Chapter 7. Arrays....140

7.1 Associating Multiple Elements per Key in an Array....142

Problem....142

Solution....142

Discussion....142

See Also....144

7.2 Initializing an Array with a Range of Numbers....144

Problem....144

Solution....144

Discussion....145

See Also....146

7.3 Iterating Through Items in an Array....146

Problem....146

Solution....146

Discussion....146

See Also....148

7.4 Deleting Elements from Associative and Numeric Arrays....148

Problem....148

Solution....148

Discussion....149

See Also....151

7.5 Changing the Size of an Array....152

Problem....152

Solution....152

Discussion....152

See Also....154

7.6 Appending One Array to Another....154

Problem....154

Solution....154

Discussion....155

See Also....157

7.7 Creating an Array from a Fragment of an Existing Array....157

Problem....157

Solution....157

Discussion....157

See Also....160

7.8 Converting Between Arrays and Strings....160

Problem....160

Solution....160

Discussion....160

See Also....162

7.9 Reversing an Array....163

Problem....163

Solution....163

Discussion....163

See Also....164

7.10 Sorting an Array....164

Problem....164

Solution....164

Discussion....164

See Also....166

7.11 Sorting an Array Based on a Function....167

Problem....167

Solution....167

Discussion....167

See Also....169

7.12 Randomizing the Elements in an Array....169

Problem....169

Solution....169

Discussion....169

See Also....169

7.13 Applying a Function to Every Element of an Array....170

Problem....170

Solution....170

Discussion....170

See Also....173

7.14 Reducing an Array to a Single Value....173

Problem....173

Solution....173

Discussion....173

See Also....174

7.15 Iterating over Infinite or Very Large/Expensive Arrays....174

Problem....174

Solution....175

Discussion....175

See Also....176

Chapter 8. Classes and Objects....178

8.1 Instantiating Objects from Custom Classes....185

Problem....185

Solution....185

Discussion....186

See Also....187

8.2 Constructing Objects to Define Defaults....187

Problem....187

Solution....187

Discussion....188

See Also....189

8.3 Defining Read-Only Properties in a Class....189

Problem....189

Solution....189

Discussion....189

See Also....191

8.4 Deconstructing Objects to Clean Up After the Object Is No Longer Needed....192

Problem....192

Solution....192

Discussion....192

See Also....194

8.5 Using Magic Methods to Provide Dynamic Properties....194

Problem....194

Solution....194

Discussion....195

See Also....196

8.6 Extending Classes to Define Additional Functionality....196

Problem....196

Solution....196

Discussion....197

See Also....198

8.7 Forcing Classes to Exhibit Specific Behavior....198

Problem....198

Solution....199

Discussion....199

See Also....202

8.8 Creating Abstract Base Classes....203

Problem....203

Solution....203

Discussion....203

See Also....205

8.9 Preventing Changes to Classes and Methods....205

Problem....205

Solution....205

Discussion....205

See Also....209

8.10 Cloning Objects....209

Problem....209

Solution....209

Discussion....210

See Also....213

8.11 Defining Static Properties and Methods....213

Problem....213

Solution....213

Discussion....214

See Also....216

8.12 Introspecting Private Properties or Methods Within an Object....216

Problem....216

Solution....216

Discussion....216

See Also....218

8.13 Reusing Arbitrary Code Between Classes....218

Problem....218

Solution....218

Discussion....219

See Also....221

Chapter 9. Security and Encryption....222

9.1 Filtering, Validating, and Sanitizing User Input....229

Problem....229

Solution....229

Discussion....229

See Also....233

9.2 Keeping Sensitive Credentials Out of Application Code....233

Problem....233

Solution....233

Discussion....234

See Also....235

9.3 Hashing and Validating Passwords....235

Problem....235

Solution....235

Discussion....236

See Also....238

9.4 Encrypting and Decrypting Data....238

Problem....238

Solution....238

Discussion....240

See Also....244

9.5 Storing Encrypted Data in a File....244

Problem....244

Solution....244

Discussion....247

See Also....248

9.6 Cryptographically Signing a Message to Be Sent to Another Application....248

Problem....248

Solution....248

Discussion....249

See Also....250

9.7 Verifying a Cryptographic Signature....250

Problem....250

Solution....250

Discussion....251

See Also....251

Chapter 10. File Handling....252

10.1 Creating or Opening a Local File....253

Problem....253

Solution....253

Discussion....253

See Also....255

10.2 Reading a File into a String....255

Problem....255

Solution....255

Discussion....255

See Also....256

10.3 Reading a Specific Slice of a File....256

Problem....256

Solution....256

Discussion....257

See Also....257

10.4 Modifying a File in Place....258

Problem....258

Solution....258

Discussion....258

See Also....258

10.5 Writing to Many Files Simultaneously....259

Problem....259

Solution....259

Discussion....259

See Also....261

10.6 Locking a File to Prevent Access or Modification by Another Process....261

Problem....261

Solution....261

Discussion....261

See Also....262

Chapter 11. Streams....264

11.1 Streaming Data to/from a Temporary File....268

Problem....268

Solution....268

Discussion....269

See Also....270

11.2 Reading from the PHP Input Stream....270

Problem....270

Solution....270

Discussion....271

See Also....273

11.3 Writing to the PHP Output Stream....273

Problem....273

Solution....273

Discussion....274

See Also....275

11.4 Reading from One Stream and Writing to Another....275

Problem....275

Solution....275

Discussion....276

See Also....277

11.5 Composing Different Stream Handlers Together....277

Problem....277

Solution....278

Discussion....278

See Also....281

11.6 Writing a Custom Stream Wrapper....281

Problem....281

Solution....281

Discussion....282

See Also....284

Chapter 12. Error Handling....286

12.1 Finding and Fixing Parse Errors....286

Problem....286

Solution....286

Discussion....287

See Also....288

12.2 Creating and Handling Custom Exceptions....288

Problem....288

Solution....288

Discussion....288

See Also....290

12.3 Hiding Error Messages from End Users....290

Problem....290

Solution....290

Discussion....291

See Also....293

12.4 Using a Custom Error Handler....293

Problem....293

Solution....293

Discussion....293

See Also....294

12.5 Logging Errors to an External Stream....294

Problem....294

Solution....294

Discussion....295

See Also....295

Chapter 13. Debugging and Testing....296

13.1 Using a Debugger Extension....298

Problem....298

Solution....298

Discussion....298

See Also....300

13.2 Writing a Unit Test....300

Problem....300

Solution....300

Discussion....301

See Also....305

13.3 Automating Unit Tests....305

Problem....305

Solution....305

Discussion....306

See Also....307

13.4 Using Static Code Analysis....308

Problem....308

Solution....308

Discussion....308

See Also....309

13.5 Logging Debugging Information....309

Problem....309

Solution....309

Discussion....310

See Also....313

13.6 Dumping Variable Contents as Strings....313

Problem....313

Solution....313

Discussion....314

See Also....316

13.7 Using the Built-in Web Server to Quickly Run an Application....316

Problem....316

Solution....317

Discussion....317

See Also....318

13.8 Using Unit Tests to Detect Regressions in a Version-Controlled Project with git-bisect....318

Problem....318

Solution....318

Discussion....319

See Also....322

Chapter 14. Performance Tuning....324

14.1 Timing Function Execution....327

Problem....327

Solution....327

Discussion....327

See Also....331

14.2 Benchmarking the Performance of an Application....331

Problem....331

Solution....331

Discussion....333

See Also....337

14.3 Accelerating an Application with an Opcode Cache....337

Problem....337

Solution....338

Discussion....338

See Also....340

Chapter 15. Packages and Extensions....342

15.1 Defining a Composer Project....344

Problem....344

Solution....344

Discussion....345

See Also....347

15.2 Finding Composer Packages....347

Problem....347

Solution....347

Discussion....347

See Also....349

15.3 Installing and Updating Composer Packages....349

Problem....349

Solution....349

Discussion....349

See Also....352

15.4 Installing Native PHP Extensions....352

Problem....352

Solution....352

Discussion....353

See Also....354

Chapter 16. Databases....356

16.1 Relational Databases....356

16.2 Key-Value Stores....357

16.3 Graph Databases....358

16.4 Document Databases....359

16.5 Connecting to an SQLite Database....359

Problem....359

Solution....359

Discussion....360

See Also....361

16.6 Using PDO to Connect to an External Database Provider....361

Problem....361

Solution....361

Discussion....363

See Also....366

16.7 Sanitizing User Input for a Database Query....366

Problem....366

Solution....366

Discussion....366

See Also....368

16.8 Mocking Data for Integration Testing with a Database....368

Problem....368

Solution....369

Discussion....370

See Also....373

16.9 Querying an SQL Database with the Eloquent ORM....373

Problem....373

Solution....373

Discussion....374

See Also....376

Chapter 17. Asynchronous PHP....378

17.1 Fetching Data from Remote APIs Asynchronously....384

Problem....384

Solution....384

Discussion....384

See Also....386

17.2 Waiting on the Results of Multiple Asynchronous Operations....386

Problem....386

Solution....386

Discussion....387

See Also....388

17.3 Interrupting One Operation to Run Another....388

Problem....388

Solution....388

Discussion....389

See Also....391

17.4 Running Code in a Separate Thread....391

Problem....391

Solution....391

Discussion....393

See Also....396

17.5 Sending and Receiving Messages Between Separate Threads....396

Problem....396

Solution....396

Discussion....399

See Also....400

17.6 Using a Fiber to Manage the Contents from a Stream....400

Problem....400

Solution....400

Discussion....402

See Also....404

Chapter 18. PHP Command Line....406

18.1 Parsing Program Arguments....407

Problem....407

Solution....407

Discussion....407

See Also....410

18.2 Reading Interactive User Input....410

Problem....410

Solution....410

Discussion....411

See Also....412

18.3 Colorizing Console Output....412

Problem....412

Solution....412

Discussion....412

See Also....413

18.4 Creating a Command-Line Application with Symfony Console....413

Problem....413

Solution....413

Discussion....414

See Also....416

18.5 Using PHP’s Native Read-Eval-Print-Loop....417

Problem....417

Solution....417

Discussion....417

See Also....419

Index....420

About the Author....432

If you're a PHP developer looking for proven solutions to common problems, this cookbook provides code recipes to help you resolve a variety of coding issues. PHP is a remarkably easy language to work with, which explains why it powers more than 75% of the websites online today. It's also incredibly forgiving of programming mistakes, which can perpetuate reuse of questionable code.

By leveraging modern versions of PHP through version 8.2, author Eric Mann provides self-contained recipes that will enable you to solve the problems you face in your day-to-day work. You'll also find established patterns and examples that any developer can follow for addressing common problems with PHP. With these recipes, you'll quickly identify and resolve complicated issues without having to reinvent the wheel.

This practical guide will help you:

  • Build efficient applications composed of functions and objects
  • Explore the type system of modern PHP
  • Understand key concepts such as encryption, error handling, debugging, and performance tuning
  • Examine the PHP package/extension ecosystem
  • Learn how to build basic web and command-line applications
  • Work securely with files on a machine, both encrypted and in plain text

Похожее:

Список отзывов:

Нет отзывов к книге.